Отладка программ

Отладка программ осуществляется с помощью программы-отладчика Turbo Debugger td.exe. Строка запуска: td.exe <исполняемый модуль>.

После запуска программы-отладчика в основном окне (слева вверху) будет находиться программный код, внизу – дамп сегмента, то есть символы и их коды, следующие подряд, начиная с определённого места сегмента. Правее находятся регистры общего назначения (РОН), а ещё правее – основные флаги процессора. Снизу справа – стек (см рис. 6.3).

Рис. 6.3. Внешний вид программы td.exe.

Пошаговое исполнение программы запускается клавишей F8. Каждый следующий шаг программы запускается нажатием клавиши F8 ещё раз до тех пор, пока Turbo Debugger не выдаст сообщение: Terminated, exit code 0, что означает – программа завершена с кодом завершения 0. Следующее нажатие клавиши F8 приведёт к тому, что Turbo Debugger спросит: "Program already terminated, Reload?" (Программа уже завершена, перезагрузить?) Если в программе есть процедуры, то зайти вовнутрь каждой из них можно по клавише F7. Просмотр экрана пользователя на любом этапе можно осуществлять с помощью сочетания клавиш: Alt-F5.

Треугольник, стоящий на строке команды в сегменте кода (рис. 6.4), показывает, какая команда будет исполняться следующей.

Обратите внимание, что каждый раз после выполнения команды (или группы команд), белым цветом подсвечиваются те регистры и флаги, которые изменились в предыдущую команду.

Рис. 6.4. Сегмент кода.

При запуске Turbo Debugger в дампе сегмента данных отображается состояние сегмента для регистра данных (ds) Turbo Debugger, а не загруженной программы. Чтобы перегрузить регистр данных и посмотреть состояние сегмента данных программы, достаточно выполнить хотя бы одну команду программы (например, клавишей F8).

Затем, чтобы увидеть дамп сегмента данных, нужно вызвать из меню программы "View" команду "Dump" (рис. 6.5).

Рис. 6.5. Внешний вид дампа сегмента данных

Дальний адрес – это полный адрес ячейки, который включает в себя адрес сегмента DS (его значение можно найти в окне РОН) и смещение внутри сегмента для этой ячейки. Колонка дальних адресов соответствует адресам первых элементов текущей строки. Например, символу "З" (код 87) на рисунке 6.5 соответствует дальний адрес DS:0000, т.е. смещение в сегменте DS равно 0. Для следующего символа "а" (код A0) соответствует адрес DS:0001. Символу "п" (код AF) – адрес DS:0002. На следующей строке символ "е" (код A5) имеет адрес DS:0008.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: