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

ВНИМАНИЕ -

Для работы со встроенным отладчиком программа должна компилироваться с установленными флажками в группе Debugging на вкладке Compiler окна, открываемого командой Project ► Options.

Точки останова

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

Для установки безусловной точки останова поместите в нужную строку текстовый курсор и нажмите клавишу F5 - строка выделится цветом (по умолчанию - красным). Повторное нажатие клавиши F5 удаляет точку останова. Создать-удалить точку останова можно также щелчком мыши на служебном поле слева от строки. Созданная таким способом точка останова прерывает выполнение программы и передает управление среде Delphi перед тем, как будет выполнен расположенный в строке оператор программы.

Точку останова можно сделать условной. Для этого используется окно, вызываемое командой View ► Debug Windows ► Breakpoints или комбинацией клавиш Ctrl+Alt+B. В этом окне перечислены все созданные в программе точки останова. Выделите ту из них, которая должна стать условной, и нажмите клавишу Enter - появится окно, показанное на рис. 10.3.

10.1.2. Основные приемы отладки в среде Delphi

Рис. 10.3. Окно управления свойствами точки останова

В поле Condition окна введите условное выражение с программными переменными и (или) свойствами компонента, например:

(Progress > 45) and (Progress < 55) Точка останова прервет выполнение программы только при истинности условного выражения. В поле Pass count окна можно указать количество проходов точки останова до момента ее срабатывания.

В последних версиях Delphi точки останова можно объединять в группы. Для этого нужно в поле Group ввести идентификатор группы, а в полях Enable group и Disable group - идентификаторы соответственно разрешенных и запрещенных групп.

В некоторых фрагментах программы точки останова устанавливать нельзя. Это касается тех фрагментов, которые связаны с отрисовкой компонента: прерванная отрисовка возобновится заново после выхода из точки останова, которая сработает повторно, и так до тех пор, пока не будет снята. В этих ситуациях можно использовать поля Log message и Eval expression; поместите в первое произвольную текстовую строку, во второе - произвольное выражение и сбросьте флажок Break. Точка не прервет выполнение программы, а поместит ваше сообщение и значение вычисленного выражения в специальный журнал отладки, который после прогона программы вы сможете посмотреть с помощью команды View ► Debug Windows ► Event Log или комбинации клавиш Ctrl+Alt+V.

Трассировка программы

Трассировка программы означает пошаговое исполнение операторов исходного текста программы после срабатывания точки останова. Для трассировки используются клавиши F7 и F8. Нажатие клавиши F7 приводит к выполнению операторов текущей строки текста программы. Если в строке есть операторы вызова подпрограмм, текущей строкой становится первая строка первой вызываемой подпрограммы, в противном случае - следующая строка кода. При нажатии клавиши F8 происходит то же самое, но работа вызываемых подпрограмм не прослеживается.

СОВЕТ -

Не располагайте в одной строке кода несколько операторов - это затруднит трассировку программы.

Получение значений переменных и выражений

После срабатывания точки останова и (или) в ходе трассировки программы можно посмотреть значения переменных или выражений с ними. Для этого при работе с последними версиями Delphi просто подведите указатель мыши к идентификатору переменной в коде программы - значение переменной появится в окне оперативной подсказки.

Для просмотра значений переменных в первых версиях Delphi и значений выражений в любых версиях используется окно наблюдения, которое вызывается командой View ► Debug Windows ► Watches или комбинацией клавиш Ctrl+Alt+W. Щелкните правой кнопкой мыши в этом окне и выберите команду Add Watch в контекстном меню. В новом окне введите в поле Expression имя переменной или любое допустимое выражение. После этого при трассировке или при срабатывании точки остановка в окне Watch List появится текущее значение переменной или выражения.

СОВЕТЧтобы окно кода при трассировке не закрывало собой окно Watch List, «причальте» последнее к нижнему краю окна кода. Учтите, что причаливание будет успешным только в том случае, если окно кода не развернуто во весь экран.

Процедура Assert

В модуль System последних версий Delphi (начиная с версии 3) включена отладочная процедура Assert, имеющая такой прототип:

procedure Assert(expr : Boolean [; const msg: String]);

Она получает в качестве параметра некоторое логическое выражение ехрг и, возможно, текстовую строку msg. Процедура вычисляет выражение и, если его значение равно False, возбуждает исключение EAssertionFailed. В создаваемом при этом окне будет показано сообщение msg, а если оно опущено - стандартное сообщение. Кроме того, отображается полный маршрут доступа к файлу с исходным текстом и номер строки, в которой возбуждено исключение.

Эта процедура является удобным отладочным инструментом, так как ее выполнение можно запретить или разрешить с помощью глобальной директивы компилятора {$С+/-}. Тот же эффект дает установка-сброс флажка Assertions на вкладке Compiler окна, открываемого командой Project ► Options.

10.1. Тестирование компонента || Оглавление || 10.2. Создание значка компонента


Искусство создания компонентов Delphi



Новости за месяц

  • Июль
    2019
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс