Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Программные средства отладки



При создании приложения на базе MFC в него можно включить определенные инструкции, используемые только во время его отладки. Их использование замедляет выполнение программы. Цель использования: получение дополнительных сообщений, которые облегчают процесс отладки. При создании окончательной версии приложения эти операторы следует удалить.

Режим компиляции приложения должен быть Debug (отладочный), т.к. инструкции – специальные функции и макросы библиотеки MFC, работающие только в отладочном режиме. Кроме того, в отладочной версии приложения Visual C++ с помощью директивы # define определяется константа _ DEBUG, используемая в директивах условной компиляции и в макросах отладки.

Макрос ASSERT (BOOLexpression). Данный макрос используется для проверки некоторых логических условий, которые должны выполняться в данной точке программы. Его работа заключается в следующем: если логическое выражение BOOLexpression, передаваемое ему в качестве аргумента, имеет значение FALSE, выполнение приложения прерывается и на экран выводится окно сообщения, показанное на рис. П 5.2. В данном окне указывается имя файла и номер строки, в которой произошла ошибка.

Рис. П 5.2

Нажатие кнопки «Повтор» позволяет перейти в текст программы для ее дальнейшей отладки, причем текущая точка останова устанавливается на строку соответствующего макроса ASSERT. В противном же случае ничего не происходит, и программа выполняется дальше.


Макрос TRACE (exp) служит для вывода диагностических сообщений. Синтаксис макроса TRACE аналогичен синтаксису функции printf. Здесь exp переменное число параметрических аргументов, т.е. макрос позволяет выводить сообщения с любым числом параметрических аргументов. Под параметрическим аргументом понимается идентификатор переменной, значение которой должно быть преобразовано в текстовую строку в соответствии с указанным форматом. Помимо макроса TRACE существуют TRACE 1, TRACE 2 и TRACE 3. Число в имени макроса указывает на количество параметрических аргументов в нем. Макросы TRACE 0, TRACE 1, TRACE 2 и TRACE 3 созданы исключительно с целью экономии места в сегменте данных. Все макросы TRACE посылают свои сообщения в поток afxDump.

Для посылки сообщения могут быть использованы и обычные функции вывода, однако они будут работать и в окончательной версии, что бывает нежелательно.

Пример вывода сообщения о возникновении ошибки в файле:

TRACE2("\n Ошибка номер: %d в файле %s \n", nError, szFileName);

Следующий пример иллюстрирует работу данного макроса:

...

int a = 5;

char s[] = ”Minsk”;

TRACE(“\n a = %d, s = %s \n”, a, s);

...

В поле среды OutPut получим

a=5, s=Minsk

В окончательной версии приложения Release, в которой константа _ DEBUG не определена, макросы ASSERT и TRACE не выполняют никаких действий. Это позволяет оставлять их в тексте программы. В случае же необходимости контроля некоторых логических условий и в рабочей области вместо ASSERT необходимо использовать макрос VERIFY (BOOLexpression), который работает точно так же, но в рабочей версии проекта.





Дата публикования: 2015-09-17; Прочитано: 208 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...