Шаг 35.
Отладчик Turbo Debugger for DOS.
Окно Module
На этом шаге мы рассмотрим назначение и возможности окна Module.
Turbo Debugger предусматривает два способа просмотра файлов на диске: окно Module и окно File.
Окно Module чаще всего используется в отладчике. Его можно применять для просмотра исходного кода
выполняемого модуля, скомпилированного с отладочной информацией.
При загрузке программы в отладчик окно Module загружается автоматически. Также окно модуля (Module)
открывается путем выбора из главного меню команды View | Module (или нажатием клавиши F3).
В окне модуля отображается содержимое исходного файла выбранного модуля. В заголовке окна модуля указыается
имя просматриваемого модуля, а также имя исходного файла и номер строки, на которой находится курсор. Указатель
в виде стрелки , находящийся в первом столбце окна,
показывает текущую точку программы (CS:IP).
Заметим, что при запуске отладчика Turbo Debugger требуется, чтобы отладчику были доступны как файл типа
EXE, так и исходный файл программы. Turbo Debugger ищет исходные файлы сначала в той же
директории, где находил их компилятор при компиляции программы, затем в директории, заданной командой
Options | Path for Source, затем в текущей директории, а затем в директории, где находится файл типа EXE.
Если после имени файла, указанного в заголовке окна, появляется слово modified (модифицирован), это
означает, что в текст программы были внесены изменения после компиляции и компоновки программы, в результате
которых была сформирована отлаживаемая программа. В результате этой модификации номера строк подпрограмм
в измененном исходном файле могут больше не соответствовать номерам строк в той версии исходного файла,
которая использовалась для построения отлаживаемой программы. Вследствие этого, указатель, показывающий
текущую строку программы (CS:IP), будет установлен не на той строке.
В локальном меню окна модуля (рисунок 1) имеется ряд команд, позволяющих перемещаться по отображаемому в
окне модулю, указывать элементы данных и проверять их, загружать в окно новый файл или модуль. Для вызова
локального меню окна модуля используйте клавиши Alt+F10.
Рис.1. Окно Module и его локальное меню
Рассмотрим пункты этого локального меню.
- Команда Inspect. Открывает окно проверки, в котором отображается содержимое переменной
программы, на которой установлен курсор. Прежде чем выполнять эту команду, необходимо поместить курсор на
одну из переменных программы в ее исходном тексте.
С помощью клавиши Insert можно выбрать для проверки (выделить) целое выражение. Это исключает
необходимость ввода с клавиатуры выражения, которое в явном виде имеется в тексте программы.
Поскольку эта команда исключает необходимость ввода с клавиатуры имен всех интересующих программиста
переменных, ее очень удобно использовать для быстрой проверки различных переменных отлаживаемой программы.
- Команда Watch. Заносит переменную, на которой установлен курсор в окно слежения.
Эту команду удобно использовать в тех случаях, когда требуется непрерывно следить за значением переменной во
время выполнения программы. Прежде чем выполнять эту команду, необходимо позиционировать курсор на одну из
переменных программы в ее исходном тексте, либо ввести ее в блоке ввода блока диалога, который будет вам выдан.
С помощью клавиши Insert можно выбрать для слежения целое выражение. Это исключает необходимость
ввода с клавиатуры выражения, которое в явном виде имеется в исходном модуле.
- Команда Module.... Позволяет просмотреть другой модуль путем его выбора из отображаемого
списка модулей. Эту команду удобно использовать в том случае, если текущий модуль больше не представляет
интереса и нежелательно открывать на экране еще одно окно модуля.
- Команда File.... Позволяет выбрать для просмотра один из нескольких исходных файлов,
составляющих просматриваемый модуль. Отладчик представляет на экране список, из которого можно выбрать
нужный файл. В большинстве случаев модуль состоит только из одного исходного файла, который содержит
исходный текст программы. Другие файлы, включенные в модуль, обычно содержат только определения констант
и структур данных. Используйте эту команду в том случае, если исходный текст модуля содержится в
нескольких файлах.
Для просмотра первого файла используйте View | File. Если требуется просматривать одновременно более одного
файла, надо использовать View | Another | File для открытия последующих окон File | Module главного меню.
- Команда Previos. Возвращает курсор в то место исходного модуля, которое просматривалось
ранее. Эту команду можно также использовать для возврата в предыдущее место программы после выполнения команды,
которая изменила положение курсора в исходном модуле.
- Команда Line.... Позиционирует курсор на другую строку исходного текста. Для этого
надо ввести номер строки, на которую требуется перейти. Если введенный номер превышает количество строк в
исходном тексте, курсор будет позиционирован на последнюю строку файла.
- Команда Search.... Выполняет поиск строки символов, начиная с текущей позиции курсора. В
ответ на запрос отладчика надо ввести строку, которую требуется найти. Если при выполнении команды курсор
установлен на слове, которое может являться именем переменной, это слово автоматически заносится в поле запроса.
Кроме того, если с помощью клавиши Insert отметить какой-либо фрагмент текста, этот фрагмент также будет
занесен в поле запроса. Это исключает необходимость ввода с клавиатуры, если искомая строка уже имеется в
просматриваемом исходном тексте.
Для поиска можно использовать простые метасимволы:
- ? соответствует любому одному символу, а
- * соответствует нулю и более символов.
При достижении конца файла поиск не возобновляется автоматически с его начала. Для того чтобы выполнить поиск
во всем файле, надо сначала перейти на его первую строку, нажав клавиши Ctrl+PgUp.
- Команда Next. Ищет следующий экземпляр строки символов, которая была задана в
команде Search. Эту команду можно использовать только после выполнения команды Search.
Иногда бывает так, что команда Search сначала находит не ту строку, которую в действительности требовалось найти.
Команда Next позволяет повторять поиск, исключая необходимость повторного ввода с клавиатуры искомой
строки.
- Команда Origin. Позиционирует курсор на ту строку, которая соответствует текущей
точке программы (содержимому регистров CS:IP). Если текущая точка программы находится не в
просматриваемом модуле, этот модуль загружается в окно модуля. Эту команду удобно использовать после просмотра
различных фрагментов исходного текста, когда необходимо вернуться в то место, где была остановлена программа.
- Команда Goto.... Позиционирует курсор в указанное место программы. Для этого надо
ввести адрес той строки, к которой требуется перейти. Можно ввести номер строки, имя функции или
шестнадцатеричный адрес.
Эту команду можно также вызвать, просто начав вводить метку, к которой требуется перейти. При этом на экране
появляется поле запроса, точно такое же, как если бы была выбрана команда Run | Execute To. Это удобная
форма выбора часто используемой команды.
- Команда Edit. Вызывает текстовый редактор, с помощью которого можно вносить изменения
в исходный файл просматриваемого модуля. Команду, которая будет вызывать нужный редактор, можно задать с
помощью программы настройки TDINST.
На следующем шаге мы рассмотрим окно File.
Предыдущий шаг
Содержание
Следующий шаг