Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Pascal и Delphi / Borland Pascal / Отладка в интегрированной среде /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Управление выполнением - Программирование от RIN.RU
Управление выполнением



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


Трассировка программы во многом аналогичная ее выполнению по шагам. Единственное исключение состоит в том, что когда встречается оператор вызова процедуры или функции, при трассировке эти процедуры и функции также выполняются по шагам, а при простом выполнении по шагам управление возвращается вам после завершения выполнения подпрограммы.


Например, чтобы выполнить трассировку кода в предыдущем примере, загрузите файл, затем выберите команду Run|Trace Into или нажмите клавишу F7. Когда вы в первый раз делаете это, управление перемещается на оператор begin основной программы. Повторное нажатие F7 снова перемещает строку управления на оператор for. После этого нажатие клавиши F7 трассирует вызов функции Negate - строка выполнения перемещается на оператор begin в блоке функции. Если вы продолжаете нажимать F7, строка выполнения перемещается по функции, а затем, когда вы дойдете до оператора end, возвращается к оператору вызова.


Формат вашей программы влияет на поведение строки выполнения при трассировке, хотя и не в такой степени как при пошаговом выполнении. Если код сформатирован как в первом примере, то трассировка оператора for приводит к выполнению 10 раз функции Negate. Если вы разобъете оператор for на две строки, как во втором примере, то трассировка оператора end функции возвращает строку выполнения ту строку основной программы, которая будет выполняться следующей. Первые девять раз это снова будет вызов функции. В десятый раз строка выполнения перемещается на оператор end программы.


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


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


Выполнение begin в блоке begin..end основной программы вызывает код инициализации для любого используемого в программе модуля в том порядке, который указывается в операторе uses программы. Аналогично, выполнение оператора begin в начале секции инициализации вызывает код инициализации для любых модулей, используемых в данном модуле. Выполнение по шагам и трассировка работает в этих случаях как и можно ожидать - пошаговое выполнение begin выполняет всю инициализацию, возвращая управление на следующий оператор только после того, как все будет завершено; при трассировке выполняется трассировка кода инициализации.


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


Если вы используете в своей программе объекты, отладчик интерпретирует свои методы аналогично тому, как он интерпретирует обычные процедуры и функции. Пошаговое выполнение метода интерпретирует метод как один шаг, возвращая управление к отладчику после того как метод завершает выполнение. Трассировка метода загружает и выводит на экран код метода и трассирует его операторы.


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


Если вы выполняете в программе компоновку с внешним кодом, используя для этого директиву компилятора {$L имя_файла}, то если компонуемый файл .OBJ содержит отладочную информацию, вы можете трассировать этот код или выполнять его по шагам. Borland Pascal ничего не знает об отлаживаемом вами коде в этих модулях, но он будет показывать вам соответствующие строки в исходном коде.


Вы можете отлаживать внешний код, написанный на любом языке, включая Си, С++ и ассемблер. Если код отвечает требованиям для внешней компоновки и содержит полную стандартную отладочную информацию, интегрированная среда отладчика может выполнять его по шагам или трассировать.


<<<  НазадВперед  >>>
 1  2  3 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Какие существуют виды ошибок?

Методы отладки

Генерация отладочной информации

Что такое выражение?

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

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь