Реферат: Отладка программ пользователя в Tubro Pascal
Write ( List [I] : 8 );
Readln
end. {программа Test.Sort}
Как уже говорилось, идея была в том, чтобы обойти первоначальный цикл и начать трассировку с вызова процедуры Sort. Новый вариант. Передвиньте курсор на строку с вызовом процедуры и выполните команду Debug/Toggle Breakpoint ( Ctrl-F8), которая отметит строку, как точку прерывания. Теперь выполните программу до этой точки, используя команду Run/Run (Ctrl-F9 ). Когда программа достигнет этой строки, она остановится и позволит Вам начать отладку.
Использование Ctrl-Break.
Кроме назначения точек прерывания, пользователь может сделать немедленную остановку во время выполнения программы, используя клавишу Ctrl-Break. Это означает, что можно прервать работу программы в любое время. Когда Вы нажимаете на клавишу Ctrl-Break, выполнение программы прекращается. Вы возвращаетесь в редактор, курсор выполнения расположен на следующей строке программы, и программа готова к дальнейшему пошаговому выполнению.
Фактически, отладчик автоматически подключает DOS, BIOS и другие сервисные функции. Он знает, является ли текущий выполняющийся код программой DOS, программой BIOS или программой пользователя. Когда Вы нажимаете на клавишу Ctrl-Break, отладчик ждет, пока программа выполняется сама. Затем он делает пошаговое выполнение инструкций машинного уровня, пока следующая инструкция не будет в начале строки исходного кода на Паскале. С этого момента отладчик прекращает работу, перемещает курсор выполнения на эту строку и предлагает Вам нажать на клавишу ESC.
Примечание: Если пользователь нажимает на клавишу Ctrl-Break второй раз еще до того, как отладчик находит и отображает следующую строку исходного кода для выполнения, то отладчик завершает работу и не пытается найти строку исходного кода. В этом случае, процедуры выхода не выполняются, что означает, что файлы, видеорежим и распределение памяти DOS могут быть не полностью очищены.
Просмотр значений.
Выполнение программы предоставляет много информации, но не в том объеме, как хотелось бы. Может возникнуть необходимость просмотреть за тем, как изменяются значения переменных во время выполнения программы. Рассмотрим процедуру Sort из предыдущей программы:
procedure Sort ( var L : NumList; C : word );
var
Top,Min,k : word;
Temp : integer;
begin
for Top := 1 to C-1 do
begin
Min := Top;
for k := Top+1 to C do
if L[k] Top then
begin
Temp := L[Top];
Top := L[Min];
L[Min] := Temp;
end;
end;
end; {процедуры Sort}
Примечание: Измените NLMax в теле программы на 10 так, чтобы Вы могли работать с меньшим массивом.
В этой процедуре есть ошибки, будем просматривать ее (используя команду Run/Trace Into или клавишу F7) и наблюдать за значениями переменных L, Top, Min и k.