Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Руководство по Borland Pascal.doc
Скачиваний:
76
Добавлен:
02.05.2014
Размер:
2.05 Mб
Скачать

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

Трассировка программы во многом аналогичная ее выполнению по

шагам. Единственное исключение состоит в том, что когда встреча-

ется оператор вызова процедуры или функции, при трассировке эти

процедуры и функции также выполняются по шагам, а при простом вы-

полнении по шагам управление возвращается вам после завершения

выполнения подпрограммы.

Например, чтобы выполнить трассировку кода в Примере 6.1,

загрузите файл, затем выберите команду Run|Trace Into или нажмите

клавишу F7. Когда вы в первый раз делаете это, управление переме-

щается на оператор begin основной программы. Повторное нажатие F7

снова перемещает строку управления на оператор for. После этого

нажатие клавиши F7 трассирует вызов функции Negate - строка вы-

полнения перемещается на оператор begin в блоке функции. Если вы

продолжаете нажимать F7, строка выполнения перемещается по функ-

ции, а затем, когда вы дойдете до оператора end, возвращается к

оператору вызова.

Формат вашей программы влияет на поведение строки выполнения

при трассировке, хотя и не в такой степени как при пошаговом вы-

полнении. Если код сформатирован как в Примере 6.1, то трассиров-

ка оператора for приводит к выполнению 10 раз функции Negate. Ес-

ли вы разобъете оператор for на две строки, как в Примере 6.2, то

трассировка оператора end функции возвращает строку выполнения ту

строку основной программы, которая будет выполняться следующей.

Первые девять раз это снова будет вызов функции. В десятый раз

строка выполнения перемещается на оператор end программы.

Трассировка или выполнение по шагам?

Пошаговое выполнение или трассировка выполняет одно и то же

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

под строкой вызова процедуры или функции, или когда вы выполняете

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

другие модули.

Выполнение begin в блоке begin..end основной программы вызы-

вает код инициализации для любого используемого в программе моду-

ля в том порядке, который указывается в операторе uses программы.

Аналогично, выполнение оператора begin в начале секции инициали-

зации вызывает код инициализации для любых модулей, используемых

в данном модуле. Выполнение по шагам и трассировка работает в

этих случаях как и можно ожидать - пошаговое выполнение begin вы-

полняет всю инициализацию, возвращая управление на следующий опе-

ратор только после того, как все будет завершено; при трассировке

выполняется трассировка кода инициализации.

Примечание: О модулях и их секциях инициализации расс-

казывается в Главе 7 "Модули Borland Pascal".

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

Если вы используете в своей программе объекты, отладчик ин-

терпретирует свои методы аналогично тому, как он интерпретирует

обычные процедуры и функции. Пошаговое выполнение метода интерп-

ретирует метод как один шаг, возвращая управление к отладчику

после того как метод завершает выполнение. Трассировка метода

загружает и выводит на экран код метода и трассирует его операто-

ры.

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

Если вы выполняете в программе компоновку с внешним кодом,

используя для этого директиву компилятора {$L имя_файла}, то если

компонуемый файл .OBJ содержит отладочную информацию, вы можете

трассировать этот код или выполнять его по шагам. Borland Pascal

ничего не знает об отлаживаемом вами коде в этих модулях, но он

будет показывать вам соответствующие строки в исходном коде.

Примечание: Требования к внешнему коду поясняются в

Главе 25 "Руководства по языку".

Вы можете отлаживать внешний код, написанный на любом языке,

включая Си, С++ и ассемблер. Если код отвечает требованиям для

внешней компоновки и содержит полную стандартную отладочную ин-

формацию, интегрированная среда отладчика может выполнять его по

шагам или трассировать.

Соседние файлы в папке Delphi