Отладка приложений

       

Отладка компилированного кода Visual Basic


Отладка компилированного кода Visual Basic включает проверку и отладку приложения в форме р-кода (перед его компиляцией). Отладка компилированного кода Visual Basic не столь проста, как отладка С-кода, потому что отладочная информация, которую генерирует Visual Basic, не содержит достаточных сведений о типах. Следовательно, отладчик не может расшифровывать различные объекты. Прежде чем обращаться к отладчику Visual C++, нужно использовать инструмент независимого поставщика, такой как программа SmartCheck фирмы Compuware NuMega, потому что это намного облегчает отладку в Visual Basic. Программа SmartCheck знает, как конвертировать сложные сообщения об ошибках Visual Basic в такие условия, которые точно выводят на проблему, так что не нужно использовать отладчик Visual C++. SmartCheck может также воспроизводить полный поток приложения Visual Вазютак, что пользователь может видеть, как выполняется его программа. В случае с компилированным кодом можно упростить отладку, дополнительно использовав условно компилированные вызовы функции Outputoebugstring. Во многих случаях оказалось легче отлаживать компилированный Visual Basic код на уровне языка ассемблера. Допускаю, что это звучит дико, но это действительно так. Материал главы 6 поможет читателю совершенствоваться в навыках работы на языке ассемблера.

Чтобы приготовить файлы Visual Basic к отладке, нужно сначала (во время компиляции) сгенерировать PDB-файлы. Можно установить этот режим на вкладке Compile диалогового окна Project Properties. На ней также устанавливается режим компилятора No Optimizations. Только не забудьте возвратиться в режим оптимизации, когда начнете построение коммерческой версии.

Для того чтобы можно было видеть локальные переменные стандартного типа в окне Variables Visual C++, перейдите на вкладку Locals. Visual Basic использует много временных переменных, поэтому на вкладке показано много переменных типа unnamed_vari. Если прокрутить экран вниз к основанию окна, то можно увидеть локальные переменные.


Начав работать с Visual Basic, я был озадачен, когда получил случайное исключение "Floating-point inexact result" (Неточный результат операции с плавающей точкой). Программа не выполняла никаких действий с плавающей точкой, так что я понятия не имел, откуда могло взяться это сообщение. Проделав некоторую поисковую работу, я обнаружил, что в Visual Basic реализована собственная версия структурированной обработки исключений (SEH). К сожалению, она использует в качестве одного из исключений значение EXCEPTION_FLT_INEXACT_RESULT, и когда исключение не  обработано, появляется ложное сообщение об исключении.

Одна уловка, которую используют некоторое мои коллеги, особенно когда они тестируют компилированный элемент управления ActiveX, состоит в выполнении полной среды Visual Basic под отладчиком Visual C++. Этот прием позволяет отлаживать элемент управления ActiveX и отводит программе на р-коде роль тестового приспособления. Способность переключаться между тестовой программой на р-коде и компилированным компонентом позволяет легче видеть обе стороны проблемы.



Содержание раздела