Шаг 16.
Отладчик Turbo Debugger for DOS.
Отладка Pascal-программы

    На этом шаге мы рассмотрим общие правила использования отладчика Turbo Debugger.

    Рассмотрим использование отладчика для отладки Pascal-программы. В качестве примера программы возьмем программу, решающую следующую задачу.


Пример. Составить программу, считающую сумму все цифр в числе. Если полученное число больше 10, то программа снова считает сумму всех цифр числа и т.д.

    Вот текст программы:

Program prim1;
var 
  a:longint;
const
  f:set of byte=[0..9];
Function number(a:longint):byte;
var 
  d,i,s:longint;
  e:integer;
  b,c:string;
begin
    str(a,b);
    i:=1;
    s:=0;
    repeat
      c:=b[i];
      val(c,d,e);
      s:=s+d;
      inc(i);
    until i>length(b);
    number:=s;
end;
begin
    writeln('Задайте число');
    readln(a);
    repeat
      number(a);
      a:=number(a);
    until a in f;
    write(number(a));
    readln;
end.
Текст этого примера можно взять здесь.

    Мы скомпилировали его на диск из среды Turbo Pascal, чтобы получить файл PRIM1.EXE. Для этого, помимо задания установок, описанных в предыдущем шаге, перед компиляцией мы установили опцию Compile | Destination Disk, чтобы получить EXE-файл.


Рис.1. Установка опции Compile | Destination Disk

    Затем мы запустили Turbo Debugger, выполнив команду TD.EXE PRIM1.EXE. Внешний вид приложения показан на рисунке 2.


Рис.2. Вид экрана отладчика после загрузки примера PRIM1.EXE

    В первом столбце окна модуля (рисунок 2) высвечивается стрелка , которая показывает, на какой строке Turbo Debugger остановил выполнение программы. Поскольку вы еще не запускали программу, стрелка стоит на ее первой строке. Нажмите клавишу F7, чтобы выполнить одну строку исходного текста. Стрелка и курсор переместятся на вторую исполняемую строку программы.

    Обратите внимание на правое поле заголовка окна модуля: . В нем указывается номер строки, в которой находится курсор. С помощью клавиш управления курсором переместите его вверх и вниз и посмотрите, как меняется номер строки в заголовке окна.

    Для того чтобы выполнить программу до строки 27, позиционируйте курсор на эту строку и нажмите клавишу F4. Программа PRIM1 попросит вас ввести число. Введите его и нажмите клавишу Enter. Теперь, когда курсор установлен на строке 27, нажмите клавишу F7, чтобы выполнить эту одну строку исходного текста. Поскольку в этой строке содержится вызов функции, стрелка переместится к первой строке функции Number. Продолжая нажимать F7, вы можете пошагово выполнить функцию Number и вернуться к строке после вызова - строке 28. Нажмите клавиши Alt+F8, чтобы остановить выполнение программы после возврата из функции Number. Эта команда очень удобна в том случае, если желательно сразу перейти в конец процедуры или функции.

    Если в строке 27 вместо F7 нажать F8, курсор вместо функции перейдет непосредственно в строку 28. F8 аналогична клавише F7 в том, что она выполняет функцию, но не по шагам исходного кода.

    Для того чтобы выполнить программу до какого-то конкретного места, можно напрямую указать имя функции или номер строки, не перемещая курсор к этой строке исходного текста, а затем запустить программу. Для задания метки, на которой необходимо остановить выполнение программы, нажмите клавиши Alt+F9. На экране появится поле запроса (рисунок 3).


Рис.3. Поле запроса

    Введите с клавиатуры имя Number и нажмите Enter. Программа начнет выполняться и остановится в начале функции Number.

    На следующем шаге мы рассмотрим задание и использование точек останова.




Предыдущий шаг Содержание Следующий шаг