Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отладка программ.doc
Скачиваний:
21
Добавлен:
12.04.2015
Размер:
1.78 Mб
Скачать
        1. Журнал событий

Еще одно удобное окно отладчика, впервые появившееся в Delphi 4.0, — окно Журнал событий (Evet Log ), которое позволяет отслеживать разные системные события:

    • загрузку модулей,

    • работу точек останова и их сообщениях,

    • сообщения Windows,

    • собственные сообщения, посылаемые программой.

Отслеживание потока программы в журнале может оказаться просто неоценимым.

Вызвать окно можно выполнив последовательность команд Вид/Окна Отладчика/События.

На рис.2.15 показано окно Журнал событий с информацией о загрузке модулей, о прерывании программы в точке останова и сообщением, заданным в этой точке останова в диалоговом окне Точки Останова на Строке.

С помощью команд контекстного меню окна можно:

    • очистить журнал,

    • сохранить его в файл,

    • добавить комментарии,

    • изменить настройки.

Для создания журнала без остановки программы в отладчике в программу встраиваются вызовы функции Windows API OutputDebugString. Эта функция получает указатель на строку и посылает эту строку на допустимое устройство отладки с возможностью ведения журнала. Окно Журнал событий будет перехватывать и отображать текст, передаваемый функцией OutputDebugString. Вызовы процедуры OutputDebugString отображаются в этом журнале как текст с префиксом ODS (рис. 2.16).

Рис 2.15. Окно Журнал событий с информацией о загрузке модулей и сообщениями в точке останова.

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

Рис. 2.16. Окно Журнал событий с результатами вызовов

отладочной процедуры OutputDebugString для отслеживания значения переменной X.

    1. Другие способы отладки

При разработке программ часто нет необходимости в полной отладке: просто хочется убедиться в том, что какая либо функция работает так а не иначе.

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

Такие способы отладки эффективно дополняют возможности отладчика, причем без остановки программы. К ним относятся:

    • вывод отладочной информации на форме (в компоненты TLabel, TMemo),

    • вывод отладочной информации в модальное диалоговое окно,

    • использование процедуры Assert.

При использовании модального диалогового окна выполнение программы приостанавливается, пока окно не будет закрыто. Таким образом у программиста будет иметься достаточно времени, чтобы прочесть и осмыслить полученную информацию.

Для этой цели идеально подходит процедура ShowMessage из модуля Dialogs. Она позволяет вывести строку любой длины в простом модальном диалоговом окне. В качестве параметра процедура ShowMessage получает одну строку.

      1. Использование процедуры Assert

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

Синтаксис процедуры:

procedure Assert(expr: boolean, [; const msg:string]);

Если параметр expr принимает значение False, то программа возбуждает исключительную ситуацию EAsserttionFailed с выводом строки, указанной во втором параметре.

Исключительная ситуация возбуждается лишь в том случае, если установлена опция Претензии на вкладке Компилятор в диалоговом окне Опции проекта (см. рис. 2.1).

На рис. 2. 17 показано сообщение, выведенное оператором контроля Assert((x>=0.1)and (x<=1),' X > 1! ');

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

Рис. 2. 17. Сообщение об ошибке, выданное процедурой Assert.