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

Всякий раз, когда вы запускаете программу в среде Delphi, она выполняется внутри интегрированного отладчика.

Большинство команд в меню Выполнить (Run) относится к отладчику. Некоторые из этих команд доступны также в подменю Отладка (Debug) контекстного меню редактора.

Когда программа работает в отладчике, можно приостановить ее выполнение, щелкнув на кнопке Приостановить выполнение программы (Pause) на панели инструментов Delphi (рис.2.2).

Рис.2.2. Кнопки панели инструментов Delphi, используемые при отладке.

После этого, щелкая на кнопке Шаг вне (Step Over), можно выполнять программу шаг за шагом. Вы можете также запустить программу в пошаговом режиме с самого начала, щелкнув на кнопке Шаг вне, находясь в режиме проектирования. Но имейте в виду, что приложения Windows управляются сообщениями, поэтому нет возможности выполнять их шаг за шагом все время, как можно было делать с DOS-приложениями.

По этой причине самым распространенным способом отладки приложений Delphi (и любых других приложений Windows) является установка нескольких точек останова (breakpoint) в тех разделах кода, которые вы хотите отлаживать.

Когда программа приостановлена (в отладчике), вы можете продолжить ее выполнение, вызвав команду Выполнить (Run). Тогда программа остановится на следующей точке останова.

Также вы можете более подробно наблюдать выполнение, пошагово выполняя программу. Для этого используются команды:

  • Шаг вне (Step Over) (F8), которая выполняет следующую строку кода;

  • Шаг внутрь (Trace Into) (F7), которая входит в код функции или метода (то есть запускает пошагово код функции или подпрограммы, заходя во все вызываемые подпрограммы и запуская их в пошаговом режиме и т. д.). Delphi выделяет строку, которая будет выполняться следующей, другим цветом и маленьким значком в виде стрелки, чтобы вы видели, что делает ваша программа;

  • До следующей строки (Trace to Next Source Line) (Shift+F7). Эта команда передаст управление на следующую строку вашего кода вне зависимости от последовательности команд. Эта строка кода может быть следующей строкой (как при использовании команды Шаг вне, строкой кода функции, вызываемой вашим кодом (как при использовании Шаг внутрь или строкой обработчика события, активизированной системой;

  • Чтобы отследить эффект выполнения определенной строки кода, можно переместиться на нее и дать команду Выполнить до курсора (Run to Cursor) (F4). Программа будет выполняться, пока не достигнет этой строки, так что это аналогично установке временной точки останова.

  • Наконец, новая (появившаяся в Delphi 5) команда – Выполнять до возвращения (Run until Return) (Shift+F8) запускает подпрограмму (функцию или метод) до тех пор, пока не произойдет возврат из нее. Это очень полезно, когда вы случайно входите в функцию, которую пошагово отлаживать не нужно.

    1. Использование точек останова

В Delphi есть несколько типов точек останова:

  • точки останова на строке и точки останова по адресу похожи друг на друга, так как они останавливают выполнение программы, когда процессор достигает инструкции, расположенной по определенному адресу в памяти;

  • точки останова по изменению данных останавливают выполнение при изменении значения данных по определенному адресу;

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

Как подразумевает название, при достижении точки останова (breakpoint) программа должна останавливаться. В Delphi точки останова могут гораздо больше, чем просто останавливать выполнение - каждой точке останова может быть сопоставлена какая-либо из нескольких связанных с ней команд. Этими командами могут быть стандартная остановка выполнения, вывод фиксированной строки или вычисленного выражения в журнал сообщений или активация/отключение других групп точек останова.

Окно Точки Останова (Breakpoint List) показывает всю эту дополнительную информацию вместе с описанием всех точек останова программы (рис.2.3).

Еще одна новая возможность - вы можете задавать группы точек останова. Затем можно включать и отключать сразу все точки останова данной группы или напрямую (вызовом команды из контекстного меню окна Точки Останова), или используя диалоговое окно Точки Останова на Строке (рис.2.4).

Рис.2.3 Окно Точки Останова, зафиксированное снизу окна редактора.

Окно Точки останова можно вызвать следующими способами:

  • командой главного меню Вид/Окна отладчика/Точки Останова;

  • нажав на комбинацию клавиш Ctrl+Alt+B.