Выполнение по шагам - это простейший способ выполнения прог-
раммы по элементарным фрагментам. Выбор команды 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.
Пример 6.1 Простая программа, выполняемая по шагам.
Если в окне редактирования вы выведите StepTest и нажмете
клавишу F8, то строка выполнения перемещается на оператор begin в
начале основного цикла, поскольку это первое, что выполняется в
программе. Второе нажатие клавиши F8 выполняет begin и перемещает
строку выполнения вниз до оператора for на следующей строке. Пос-
ле этого нажатие F8 вызывает выполнение всего цикла for; на экран
пользователя выводятся числа от -1 до -10, а строка выполнения
перемещается к end.
Хотя функция Negate вызывается 10 раз, строка выполнения ни-
когда на нее не перемещается. Выполнение по шагам позволяет от-
ладчику не показывать детали любых вызовов для отдельной строки.
Выполнение по шагам вызывает выполнение всего цикла for сразу,
поэтому вы не сможете видеть изменения в ходе выполнения цикла.
Если вы хотите видеть подробности цикла, внесите в пример следую-
щее простое изменение.
begin
for I := 1 to 10 do
Writeln(Negate(I));
end.
Пример 6.2 Изменение формата кода для лучшего выполнения по
шагам.
Поскольку оператор Паскаля может занимать несколько строк,
такая программа будет в точности эквивалентна предыдущей версии,
а генерируемый код будет идентичен. Но поскольку оператор Writeln
теперь находится на отдельной строке, отладчик может интерпрети-
ровать его отдельно. Если теперь вы будете нажимать клавишу F8,
то увидите, что строка выполнения будет при выполнении цикла 10
раз возвращаться на Writeln.