Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Razdel_3_Pascal_lr1-9.doc
Скачиваний:
2
Добавлен:
07.12.2018
Размер:
744.45 Кб
Скачать

2 Выполнение программы по шагам и трассировка

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

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

171

2.1 Выполнение по шагам и трассировка

Команды выполнения по шагам Step Over и трассировки Trace Into меню Run дают возможность построчного выполнения программы. Единственное отличие выполнения по шагам и трассировки состоит в том, как они работают с вызовами процедур и функций.

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

2.2 Остановка выполнения

Существует два способа сообщить IDE, что программу нужно выполнить до определенной точки, а затем остановить.

Первый способ состоит в том, чтобы найти позицию в программе, где необходимо остановиться, затем выбрать в меню Run команду Go to Cursor (Выполнение до позиции курсора). Программа выполняется как обычно, пока не достигнет оператора, где она должна остановиться. В этой точке можно проверить значения и продолжать выполнение непрерывно или по шагам.

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

2.3 Отслеживание и модификация

Для наблюдения за выводом программы встроенный отладчик имеет средства для просмотра значений переменных, выражений и структур данных. С помощью команды Watches в меню Debug в окне просмотра Watches можно добавлять или удалять отслеживаемые элементы. В этом диалоговом окне можно проверять переменные и выражения и изменять значения любых переменных, включая строки, указатели, элементы массива и поля записей, что позволяет проверить реакцию программы на различные условия.

2.4 Понятие отладочного шага

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

Строка выполнения выводится цветом, отличным от нормального цвета. Благодаря этому можно видеть, в каком месте программы идет проверка.

172

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

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

фрагментам. Выбор команды 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.

173

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

по шагам.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]