Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Выполнение программы по шагам




Это простейший способ выполнения программы по элементарным

фрагментам. Выбор команды Run|Step Over или нажатие клавиши F8 вызывает выполнение отладчиком всего кода в операторе, указанном строкой выполнения, включая любые вызываемые на ней процедуры или функции, пока управление не вернется обратно к программисту. После этого строка выполнения указывает следующий выполняемый оператор.

Возьмем следующий пример программы:

 

program StepTest;

function Negate(X: Integer): Integer;

begin

Negate:= -X;

end;

var

I: Integer;

begin

for I:= 1 to 10 do Writeln(Negate(I));

end.

 

Пример 1 Простая программа, выполняемая по шагам.

 

Если нажать клавишу F8, то строка выполнения перемещается на оператор begin в начале основного цикла, поскольку это первое, что выполняется в программе. Второе нажатие клавиши F8 выполняет begin и перемещает строку выполнения вниз до оператора for на следующей строке. После этого нажатие F8 вызывает выполнение всего цикла for; на экран пользователя выводятся числа от -1 до -10, а строка выполнения перемещается к end.

Хотя функция Negate вызывается 10 раз, строка выполнения никогда на нее не перемещается. Выполнение по шагам позволяет отладчику не показывать детали любых вызовов для отдельной строки.

Выполнение по шагам вызывает выполнение всего цикла for сразу, поэтому невозможно видеть изменения в ходе выполнения цикла.

Если необходимо видеть подробности цикла, то в пример нужно внести следующее простое изменение:

 

begin

for I:= 1 to 10 do

Writeln(Negate(I));

end.

 

 

Пример 2 Изменение формата кода для лучшего выполнения

по шагам.

Если теперь нажимать клавишу F8, то строка выполнения будет при выполнении цикла 10 раз возвращаться на Writeln.

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

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

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

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

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

2.7 Выполнение больших фрагментов

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

Чтобы задать в программе точку, до которой программист хочет ее выполнить, а затем остановиться, нужно использовать команду Run|Go To Cursor (Выполнение| Выполнение до курсора) или клавишу F4. (То есть программист сообщает отладчику, что не хочет выполнять программу по шагам, пока не достигнет заданной точки.) Для этого необходимо установить курсор на той строке, где нужно возобновить управление отладкой, затем нажать клавишу F4. Причем, это можно сделать как в начале сеанса отладки, так и когда уже часть программ мы выполнена по шагам или протрассирована.

2.8 Повторное выполнение

В ходе сеанса отладки иногда желательно начать все сначала. Выбор команды Run|Reset Program или нажатие клавиши Ctrl+F2 приведет к полному сбросу, так что выполнение по шагам, или трассировка начнется в начале основной программы.

2.9 Отслеживание вывода программы

При пошаговом выполнении часто полезно просмотреть вывод программы, называемый экраном пользователя. Turbo Pascal предоставляет несколько способов просмотра экрана пользователя.

2.9.1 Переключение экранов

В любой момент сеанса отладки можно выполнять переключение экрана IDE и экрана пользователя. Чтобы вывести экран пользователя, необходимо нажать клавиши Alt+F5. Для возврата в IDE нажать любую клавишу.

2.9.2 Окно Output

IDE предусматривает для экрана пользователя окно, которое называется окном вывода. Выбор команды меню Debug|Output открывает (выводит на переднем плане) активное окно, содержащее вывод программы.

2.10 Просмотр значений

Выполнение программы по шагам или ее трассировка могут помочь найти ошибки в алгоритме программы, но обычно желательно также знать, что происходит на каждом шаге со значениями отдельных переменных. Например, при выполнении по шагам цикла for полезно знать значение переменной цикла. IDE имеет два инструментальных средства для проверки содержимого переменных программы: окно Watches (Просмотр) и диалоговое окно Evaluate and Modify (Вычисление и модификация).

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...