Читайте также:
|
|
Программа turboDEBUGGER (в дальнейшем изложении "отладчик")позволяет пользователю в многооконном режиме отлаживать программы, представленные на языке ассемблера и в объектном коде.
ОПИСАНИЕ ФУНКЦИЙ ОТЛАДЧИКА
В данном описании рассматриваются функции, необходимые для работы с отладчиком при обучении основным принципам отладки программ.
При вызове отладчика из DOS (командой td.exe) мы попадаем в оболочку отладчика, из которой можно вызывать необходимые функции.
Если нужно чтобы при вызове отладчика, в него сразу загрузилась отлаживаемая программа, то при вызове отладчика необходимо в командной строке указать путь и имя необходимого файла.
ПРИМЕР: td.exe E:\EXE\noname.exe
Предположим, что мы вошли в отладчик, не загружая при этом отлаживаемого файла. Теперь на наше усмотрение нам дается возможность работать с двумя меню, которые высвечиваются в верхней и нижней частях дисплея.
В верхнее меню можно выйти, нажав клавишу F10.
╒═════════════════════════════════════════════════╕
│ FILE VIEW RUN DATA │
╘═════════════════════════════════════════════════╛
После нажатия клавиши F10 можно выбрать одну из функций верхнего меню. Вы-
бор осуществляется двумя способами:
1. Можно подвести светящийся курсор к необходимой функции и нажать клавишу ввода;
2. Можно нажать клавишу, соответствующую подсвеченному символу в имени функции.
При выборе какой-либо функции, высвечивается подменю (возможно несколько уровней вложенности меню), в котором можно выбрать функцию двумя вышеуказанными способами.
Рассмотрим некоторые функции подробнее:
FILE
│
└─┬───────────┬────────────┬────────────┬───────────┐
Load Change dir Get info OS shell Quit (Alt-X)
Примечание: если в меню, за именем функции высвечивается комбинация клавиш, то это означает, что эту функцию можно выбрать из любой(!) точки отладчика (не выходя в меню), нажав указанную комбинацию клавиш.
Функция LOAD позволяет загрузить отлаживаемую программу в отладчик. При вызове функции, отладчик запрашивает путь к файлу и имя файла, затем, если файл найден, то программа загружается в отладчик, иначе выдается сообщение об ошибке.
Функция CHANGE DIR позволяет изменять имена диска и каталога, с которым работает отладчик, на новые.
При выборе функции GET INFO на дисплей выводится информация о программе, с которой работает отладчик, информациия о DOS и системное время.
Функция OS SHELL позволяет выйти в DOS для выполнения команд DOS. Для возврата в отладчик необходимо набрать команду Exit.
Функция QUIT (Alt-X) -- выход из отладчика.
VIEW
│
└───┬──────────┬─────────────┬───────┬─────────┐
Watches Module (Alt-F3) Dump CPU User screen (Alt-F5)
Функция WATCHES создает окно, в котором отображаются значения переменных и констант отлаживаемой программы, заданных пользователем. При вызове функции отладчик запрашивает имена переменных, значения которых необходимо вывести на дисплей.
Функция MODULE создает окно для просмотра исходных файлов – модулей, из которых был создан EXE-файл. При вызове функции на дисплей выводятся имена файлов, из которых составлен EXE-файл (имена исходных файлов) и которые должны находиться на рабочем диске отладчика, иначе выдается сообщение об ошибке.
Функция DUMP создает окно, в котором можно просматривать содержимое памяти компьютера, указывая адреса ячеек памяти или передвигаясь по окну при помощи курсора.
Функция CPU выводит на экран следующие окна:
1. окно, в котором можно просматривать и исполнять программу в различных режимах. Это окно содержит адреса команд, объектные (шестнадцатеричные) и символьные коды команд. Символ ► указывает на команду, которая будет выполняться следующей;
2. окно в котором можно просматривать и изменять содержимое ячеек памяти. Это окно содержит адреса ячеек памяти, содержимое этих ячеек в кодах ASCII и символьном виде;
3. окно в котором можно просматривать и изменять содержимое рабочих регистров. Это окно содержит имена регистров и их текущие значения;
4. окно в котором можно просматривать и изменять содержимое регистра флагов. Это окно содержит имена флагов и их текущие значения (0 или 1);
5. окно в котором можно просматривать и изменять содержимое стека. Это окно содержит адрес вершины стека (смещение относительно сегмента стека) и содержимое нескольких ячеек стека.На содержимое вершины стека указывает символ.
Примечание: Функциии отладчика, вызываемые из окна CPU будут рассмотрены в разделе ОТЛАДКА ПРОГРАММЫ.
Переходы между окнами WATCHES, MODULE, DUMP и CPU, если эти окна созданы, осуществляются при нажатии клавиши F6.
Переходы между окнами в окне CPU осуществляются следующим образом: при нажатии клавиши Tab переход осуществляется по направлению движения часовой стрелки в следующее окно; при нажатии комбинации клавиш Shift-Tab переход осуществлляется против часовой стрелки.
Функция USER SCREEN (Alt-F5) -- открывает (при повторном выборе функции -- закрывает) "окно пользователя", т.е. окно, в котором отображается информация, выводимая отлаживаемой программой.
RUN
│
├────┬─────────────────────┬────────────────────────────┐
│ Run (F9) Program reset (Ctrl-F2) Go to cursor (F4)
└──────┬──────────────────────┬──────────────────────┐
Trace into (F7) Step over (F8) Animate (Alt-F4)
Функция RUN (F9) позволяет полностью выполнить программу в отладчике.
При вызове Функции PROGRAM RESET (Ctrl-F2) отладчик устанавливается в начальное состояние, т.е. указатель команд будет указывать на первую команду программы, а значения переменных и регистров станут неопределенными.
Примечание: функцию PROGRAM RESET необходимо выполнять после каждого полного исполнения программы, иначе будет выдана ошибка:"Program alrady terminated!" т.е. "Программа уже выполнена!".
Функция GO TO CURSOR (F4) позволяет выполнить программу до того места, которое обозначено светящимся курсором в окне команд окна CPU.
Функция TRAСE INTO (F7) позволяет исполнять программу в пошаговом режиме.
Функция STEP OVER (F8) позволяет исполнять программу в пошаговом режиме, однако она отличается от функции Trase into. Отладчик, выполняя функцию STEP OVER, при встрече команды обращения к процедуре, выполняет эту процедуру полностью не заходя в процедуру.
Функция ANIMATE (Alt-F4) заставляет отладчик выполнять программу в пошаговом режиме с заданным интервалом времени остановки между выполнением команд программы. При вызове функции отладчик запрашивает интервал времени в десятых долях секунды. Выполнение программы прекращается при нажатии любой клавиши.
DATA
│
└──────┐
Inspect
Функция INSPECT позволяет вывести значение необходимой переменной. При вызове функции отладчик запрашивает имя переменной.
Теперь рассмотрим функции нижнего меню:
Функция HELP (F1) выводит на дисплей контекстно-зависимую подсказку.
Функция CLOSE (F3) уничтожает содержимое активизированного окна, т.е. окна, в котором находится светящийся курсор. Создать окно вновь можно используя функции меню VIEW.
Функция HERE (F4) -- то же, что и GO TO CURSOR.
Функция ZOOM (F5) позволяет увеличить (при повторном выборе функции -- уменьшить) активизированное окно.
Функция NEXT (F6) -- осуществление перехода между созданными окнами. (см. функцию View).
Функция TRACE (F7) -- то же, что и TRACE INTO.
Функция STEP (F8) -- то же, что и STEP OVER.
Функция RUN (F9) --см. выше.
ОТЛАДКА ПРОГРАММЫ
Наиболее удобным для отладки программ является окно CPU. Окно CPU открывает доступ ко всем необходимым параметрам отлаживаемой программы, каковыми являются: команды программы; память, отведенная под переменные; стек и регистры.
Для наиболее удобного восприятия команд программы в окне CPU рекомендуется на этапе компиляции файла использовать управляющие ключи.
Этими ключами являются: /zi -- для транслятора tasm.exe
/v -- для редактора связей
tlink.exe
ПРИМЕР: tasm.exe /zi noname.asm
tlink.exe /v noname.obj
При использовании этих ключей в отладчике будет отображаться программа в том виде в каком она была написана (будут отображаться комментарии (если они были написаны)). В каждом из окон окна CPU кроме функций верхнего и нижнего меню возможен выбор дополнительных функций отладчика. Рассмотрим несколько таких функций.
Функция GOTO (Ctrl-G) осуществляет перевод курсора на указанную позицию (по указанному адресу).
1. В окне команд при вызове этой функции отладчик запрашивает адрес памяти, куда он и переведет курсор. Адрес ячейки памяти (местоположение команды) можно указывать несколькими способами:
a) можно указать адрес в виде XX:YY где ХХ -- адрес сегмента команд, УУ -- смещение относительно начала сегмента команд;
б) можно указать адрес в виде CS:YY где УУ -- смещение относительно начала сегмента команд;
в) можно просто указать УУ, т.е. смещение относительно начала сегмента команд.
2. В окне, отображающем содержимое памяти, при вызове этой функции отладчик запрашивает адрес ячейки памяти, куда он и переведет курсор. Адрес ячейки памяти можно указать несколькими способами:
а) можно указать адрес в виде XX:YY где ХХ -- адрес сегмента данных, УУ -- смещение относительно начала сегмента данных;
б) можно указать адрес в виде DS:YY где УУ -- смещение относительно начала сегмента данных;
в) можно просто указать УУ, т.е. смещение относительно начала сегмента данных;
г) если необходимо переместиться к ячейке, в которой находится необходимая вам переменная, то можно просто набрать имя переменной.
Примечание: НЕ ЗАБЫВАЙТЕ, что для работы с сегментом данных необходимо сначала инициализировать сегмент данных, т.е. сначала необходимо выполнить команды программы, которые помещают в регистр DS адрес сегмента данных, а затем уже можно работать с сегментом данных.
3. В окне, отображающем содержимое стека, при вызове этой функции отладчик запрашивает адрес ячейки памяти, куда он и переведет курсор. Адрес ячейки стека можно указать несколькими способами:
а) можно указать адрес в виде XX:YY где ХХ -- адрес сегмента стека, УУ -- смещение относительно начала сегмента стека;
б) можно указать адрес в виде SS:YY где УУ -- смещение относительно начала сегмента стека;
в) можно просто указать УУ, т.е. смещение относительно начала сегмента стека.
Функция ORIGIN (Ctrl-O) осуществляет перевод курсора к символу в окне, отображающем содержимое стека и в окне команд.
Функция CHANGE (Ctrl-C):
1. В окне с содержимым памяти позволяет изменять содержимое ячейки памяти, на которую указавает курсор;
2. В окне с содержимым регистров позволяет изменять содержимое регистра, на который указывает курсор;
3. В окне с содержимым стека позволяет изменять содержимое ячейки стека, на которую указывает курсор.
При вызове этой функции отладчик запрашивает новое значение, которое будет затем присвоено указанной курсором ячейке (или регистру). Численные значения можно представлять в шестнадцатеричном, двоичном и десятичном форматах. При этом численное значение в десятичтом формате необходимо заканчивать буквой D, а численное значение в двоичном формате необходимо заканчивать буквой B. Если Вы указываете число в шестнадцатеричном формате и
если это число начинается с буквы, то необходимо приписать к числу ноль слева. Если Вы указываете число в шестнадцатеричном формате и оно оканчивается на символы "B" или "D", то необходимо приписать к числу ноль справа.
Значения флагов можно изменять функцией TOGGLE (Ctrl-t). При этом светящийся курсор должен находиться в окне, отображающем содержимое регисра флагов. При вызове этой функции значение флага, на который указывает курсор, инвертируется.
Примечание: все числа, отображаемые в окне CPU представля-
ются в шеснадцатеричном (!) формате.
ПРИЯТНОЙ РАБОТЫ С ОТЛАДЧИКОМ turboDEBUGGER.
Дата добавления: 2015-07-25; просмотров: 46 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Медведева О. Г.СыктывкарРеспублика Коми | | | Премия за закрытие/повторное закрытие Статуса. |