Отладка и тестирование программ
Наши подозрения вызвали следующие места программы, в которых мы и расставили точки останова (рис. 22.8).
- Инициализация переменной tsk (чему равняется значение по умолчанию).
- Вызов стандартной функции NOW (действительно ли возвращается текущее время).
- Установка даты окончания задачи (правильно ли происходит суммирование).
После расстановки точек останова необходимо, как было сказано, указать, значения каких переменных мы хотели бы наблюдать. Естественно, что мы выбрали значения полей tsk.startoate и tsk.DueDate. Для наблюдения за несколькими свойствами или переменными существуют специальные окна Locals Window и Watch Window. Эти окна можно открыть с помощью соответствующих кнопок на панели Debug или команд меню View.
В окне локальных переменных можно наблюдать за значением всех локальных переменных выполняемой в данный момент процедуры, а окно контрольных значений предназначено для постоянного наблюдения за выбранными пользователем переменными или свойствами. Чтобы определить контрольное значение, достаточно выделить в окне модуля любую переменную, выражение или свойство и нажать кнопку Quick Watch на панели инструментов Debug. При этом появится диалоговое окно, в котором указано имя подпрограммы, само выражение, а также его текущее значение (рис. 22.8).
Нажав на расположенную в правой части диалогового окна кнопку Add, можно переместить это выражение в список наблюдаемых контрольных значений в окне Watch. При этом в момент останова отлаживаемой программы весь список наблюдаемых выражений и их значения будут сразу же видны в соответствующем подокне, располагающемся обычно в нижней части экрана. Добавим переменную tsk.startoate вышеописанным способом. Чтобы наблюдать значение переменной, необходимо выполнить следующее действие.
Рис. 22.8. Точки останова и диалоговое окно Quick Watch
Пример 22.8. Добавление переменной в окно Add Watch.
- {В окне Watch} 1R Add Watch… (рис. 22.9)
- Expression: = tsk.StartDate
- Procedure AssignTask
- OK
Итак, точки останова расставлены, окно Add Watch с наблюдаемыми переменными активно, следовательно, с замиранием сердца переходим к трассировке программы. Итак, нажимаем клавишу F5, как и предполагалось, перед инициализацией переменной происходит останов программы. Все правильно. Теперь давайте посмотрим, как изменились значения переменных В окне Add Watch: tsk.StartDate = 01:01:4501, tsk.StartDate = 01:01:4501, а duration = 5.
Рис. 22.9. Диалоговое окно Add Watch
Для единичного просмотра значения переменной можно просто подвести к ней указатель мыши, и вы увидите всплывающую подсказку. Например, duration = 5.
Для дальнейшего пошагового выполнения программы можно воспользоваться одним из трех способов:
- Step Into. При нажатии клавиши F8 выполняется очередной оператор, после чего выполнение программы приостанавливается и программа становится доступна для корректировки.
- Step Over. Нажатие комбинации клавиш SHIFT + F8 осуществляет вызов вспомогательных процедур и функций за один шаг, что дает возможность не задерживаться на их выполнении.
- Step Out. Данная комбинация клавиш CTRL + SHIFT + F8 позволяет выйти из выполняемой вспомогательной процедуры, не дожидаясь конца ее пошагового выполнения.