Программы отладки. Часть 2.

Программа TODT. Выполняет те же функции, что и ODT, и, кроме того, позволяет выводить на печать трассировочные данные. Для этого указывается количество трассируемых команд и выдается команда Т. После этого отладчик TODT выводит на печать (перфоратор, терминал) следующие данные о каждой выполняемой команде: слово состояния процессора и содержимое регистров, используемых в команде, до ее выполнения; адреса операндов и их значения до выполнения; саму команду и результаты ее выполнения. Используя командный файл, можно задать программу трассировки, которая будет выполнена затем в пакетном режиме.

Программы, написанные на языке Фортран, поддерживаются рядом отладочных средств. Во-первых, это возможность включения в программу дополнительных отладочных операторов (помеченных буквой D в первой позиции строки), которые могут, в частности, выводить на экран (печать) значения некоторых переменных. После окончания отладочных работ компилятор исключает эти операторы из результирующей программы (для этого должен быть опущен ключ /D). Во-вторых, могут быть использованы рассмотренные выше программы ODT и TODT. Наконец, может быть использована программа FDT, предоставляющая более высокий логический уровень отладки Фортран-программы. В частности, пользователь оперирует номерами операторов, а не адресами, именами переменных, которым могут быть присвоены типы, команды отладки могут быть собраны в макрокоманды и т. д. Как и программа ODT, FDT прикомпоновывается к отлаживаемой программе.

Задание точек останова производится перед любым выполняемым оператором программы, при этом указывается имя процедуры (головного модуля, подпрограммы или функции) и номер оператора (из листинга). Могут быть заданы число переходов точки без останова, макрокоманда, которой передается управление после останова. Так как обращение к операторам происходит по их номерам, надо, чтобы трассировка операторов при компиляции не была отключена) (не использовался ключ /S). Кроме задания останова по месту в программе может быть задан останов по изменению так называемой «сторожевой переменной.

Обращение к переменным может производиться по смещению в блоке данных процедуры, по имени, предварительно присвоенному смещению. При этом можно задать тип, определяющий преобразование переменной из внутреннего представления к виду, принятому в языке Фортран: можно индексировать имя для обращения к элементу массива. Таким образом, программа FDT самостоятельно выполняет поиск по цепочке адресов, который необходимо было выполнять вручную или при использовании программы ODT.

Макрокоманды, составленные из команд FDT, могут включать обращения к ранее определенным макрокомандам. Кроме того, в макрокоманде могут использоваться команды условного и безусловного переходов.

Программа PDT. Включается в состав отлаживаемой программы еще на этапе компиляции (при указании ключа /D). Отладчик PDT может использовать файл листинга программы, при этом в текст на Макроассемблере надо включить исходные операторы (указание ключа /S). Это позволяет, в частности, обращаться к переменной по имени без предварительного задания смещения. Интересной особенностью PDT является возможность получения списка доступных в данный момент переменных, а также списка вызванных к данному моменту процедур, т. е. определения вложенности выполняемой в данный момент процедуры. Кроме того, программа сохраняет информацию о десяти последних выполненных операторах: их также можно распечатать. Основной недостаток — невозможность возврата к выполненному оператору. В целом PDT проще, чем FDT.