Реферат: Отладка программ пользователя в Tubro Pascal
List [Indx] := - List [Indx]
идентична записи
Indx := -Indx.
Так как значение переменной Indx равно 11, этот оператор изменит ее значение на -11. В результате в программе начнется повторное выполнение цикла. Этот цикл теперь изменяет дополнительные байты в месте, соответствующем List[-11..0]. И т.к. значение Indx никогда не будет заканчивать цикл со значением большим или равным 11, то цикл никогда не закончится.
Важно отметить то, что используя лишь две клавиши (F7 и Ctrl - F7), через несколько минут, Вы быстро и легко прослеживаете промежуточные значения переменных и находите ошибку.
Пошаговое выполнение программы.
Различие между командами Trace Into (F7) и Step Over (F8) в том, что при использовании F7 осуществляется трассировка внутри процедур и функций, в то время как использование F8 приведет к обходу вызовов подпрограмм. Эти команды имеют особое значение при выполнении оператора begin основной программы, если программа использует модули, имеющие раздел инициализации. В этом случае, использование F7 приведет к трассировке раздела инициализации каждого модуля, что позволяет увидеть, что инициализируется в каждом модуле. При использовании F8 эти разделы не будут трассироваться, и курсор выполнения переходит на следующую строку после begin.
Рассмотрим следующий (неполный) пример программы:
($D+,L+)
program TestSort;
const
NLMax=100;
type
NumList=array[1..NLMax] of integer;
var
List : NumList;
I,Const : word;
procedure Sort ( var L:NumList; Cnt:Integer);
begin
(sort the list) (сортировкасписка)
end; (of proc sort) (процедуры Sort)
begin
randomize;
Count:=NLMax;
for I:=1 to Count do
List[I] := Random(1000);
sort(List,Count);
for I:=1 to Count do
Write(List[I] :8);