Отладчик кодов

Содержание

Слайд 2

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Отладчик кодов (debugger)

Это инструментальная программа,

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Отладчик кодов (debugger) Это
позволяющая:
загружать исполнимые файлы, эмулируя действия загрузчика из состава операционной системы;
дизассемблировать код (расшифровывать мнемоники машинных команд по имеюющимся в памяти машинным кодам);
контролировать содержимое регистров процессора и областей памяти;
исполнять программу целиком и по шагам (машинным командам);
устанавливать точки останова (breakpoint) при выполнении программы;
изменять области памяти и значения в регистрах;
ассемблировать машинные команды (переводить мнемоники в машинный код)
и др.

Слайд 3

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Символьный отладчик

Это инструментальная программа, позволяющая:
отлаживать

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Символьный отладчик Это инструментальная
исполнимые файлы, написанные на том или ином языке программирования;
использовать имена меток, процедур и переменных, заданные программистом - разработчиком отлаживаемой программы;
контролировать значения переменных;
исполнять операторы программы на языке программирования по шагам и программу целиком;
устанавливать точки останова при выполнении программы;
изменять значения переменных;
обычно входят в состав интегрированных сред разработки (IDE) на ЯВУ (Си, Паскаль-Дельфи, FoxPro, ...) и часто работают прямо в окне редактора исходного текста;

Слайд 4

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Особенности работы программы под отладчиком

Программа

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Особенности работы программы под
исполняется непосредственно процессором с реальной скоростью процессора, отладчик не эмулирует работу процессора и, как правило, не замедляет программу
Отладчик тесно взаимодействует с аппаратурой ЭВМ, активно внедряется в систему прерываний

Слайд 5

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Примеры отладчиков (DOS, i8086)

Debug -

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Примеры отладчиков (DOS, i8086)
отладчик кодов, составная часть операционной системы DOS, интерфейс командной строки
AFD - отладчик кодов, интерактивная работа
Turbo Debugger:
отладчик кодов
символьный отладчик для программ на Си, Паскале и языке ассемблера
входил в состав пакетов Turbo/Borland C/Pascal

Слайд 6

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Загрузка программы

Командная строка: td my.exe
Меню: File

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Загрузка программы Командная строка:
? Open... ? имя exe-файла или com-файла
После загрузки память выделена и регистры процессора проинициализированы так, как сделал бы загрузчик DOS
Ctrl+F2 - сброс программы, вернуть все в состояние как будто сразу после загрузки.

Слайд 7

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Отлаживаем все тот же пример:

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Отлаживаем все тот же пример:

Слайд 8

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Окно ЦПУ

Меню: View ? CPU

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Окно ЦПУ Меню: View ? CPU

Слайд 9

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Слайд 10

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Текущая команда - треугольник (CS:IP).

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Текущая команда - треугольник
Измененные регистры - белые.
Ячейка, используемая подсвеченной командой - вверху на рамке.

Слайд 11

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Употребительные клавиши

F5 - распахнуть окно

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Употребительные клавиши F5 -
отладчика
F10 - перейти в меню
Alt+F10 - вызвать контекстное меню (правая кнопка мыши)
Alt+F5 - посмотреть вид экрана, на который программа производит вывод
Клавиши выводятся в нижней строке
При нажатии Alt и Ctrl - информация меняется

Слайд 12

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Прокрутка кода клавишами

Текущая команда отмечена

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Прокрутка кода клавишами Текущая
треугольником
Прокручивать окно дизассемблера вниз можно всегда
При попытке прокрутить окно вверх дизассемблер очень часто ошибается, хватаясь за самый длинный предшествующий машинный код:

обратите внимание: cs:FFFF=00 - это не предыдущий байт перед cs:0000, это самый конец того же сегмента, смещение которого на 64к БОЛЬШЕ смещения 0

Слайд 13

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Позиционирование

Контекстное меню: Goto - просто число

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Позиционирование Контекстное меню: Goto
? смещение в том же сегменте - два числа через : ? сегмент и смещение - имя сегментного регистра:число ? сегмент и смещение - можно указать любое корректное выражение в качестве адреса, например ds:si или ax - просто ds ? смещение, равное DS!
При вводе чисел не забываем правила языка ассемблера: - число начинается с цифры - B, D или H в конце - явный признак формата (двоичное, десятичное, шестнадцатеричное)

Слайд 14

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Исполнение программы

F9 - исполнить с

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Исполнение программы F9 -
текущей команды до конца (до команды завершения программы) или до точки останова
F7 - шаг: исполнить текущую команду и остановиться после этого (если исполняется вызов процедуры – войти в процедуру)
F8 - шаг: исполнить текущую и остановиться перед следующей командой (если вызов процедуры – выполнить ее целиком и вернуться)
F4 - "сюда": исполнять программу с текущей команды и остановиться на подсвеченной строке
F2 - установить/снять точку останова на подсвеченной строке (ТО выделяются красным)

Слайд 15

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Точки останова (ловушки?)

Локальные и глобальные:

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Точки останова (ловушки?) Локальные
при выполнении конкретной команды или при выполнении условия
Безусловные: дошли до конкретной команды - остановились
Условные: выполнилось условие - остановились (замедленное выполнение при наличии таких точек останова) ? локальные и глобальные !
Условия: - произошло обращение к области памяти по определенному адресу известного размера - выполнилось условие, например, DX eq 8
Точки останова можно объединять в группы, чтобы разрешать/запрещать сразу несколько

Слайд 16

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Как работают точки останова?

Если включен

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Как работают точки останова?
режим отладки (флаг TF) - после каждой машинной команды генерируется прерывание отладки (прерывание с номером 1) - при его обработке у отладчика есть возможность вычислить глобальное условие
Команда INT 3 (машинный код CCh): вызов прерывания отладчика
Отладчик заменяет этой командой места в коде, где нужно остановиться; при срабатывании прерывания отладчик восстанавливает код "как было"

B409 CC0000 CD21

Слайд 17

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Как и что можно изменять?

Регистр.

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Как и что можно
Контекстное меню: increment, decrement, change
Флаг. Контекстное меню: toggle
Ячейка стека. Контекстное меню: change
Область дампа. - Контекстное меню: change - Или просто начать набирать в области дампа или в области символьного вида
Код. Контекстное меню: assemble

Слайд 18

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Как искать?

В области дампа. Контекстное

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Как искать? В области
меню: search - ввести строку в кавычках или значения байтов
В области кода. Контекстное меню: search - ввести машинный код (байты): 0CDh - или ввести мнемонику команды: int 21

Слайд 19

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Операции с блоками памяти

В окно

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Операции с блоками памяти
дампа, настроиться на нужную область памяти
Контекстное меню: Block:
Clear - залить нулями
Move - переместить
Set - залить указанным значением
Read - прочитать содержимое из файла
Write - записать содержимое в файл
Блок можно выделить в отладчике мышью или указывать его адрес и размер цифрами

Слайд 20

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Символьная отладка

Turbo Debugger - символьный

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Символьная отладка Turbo Debugger
отладчик
Если в скомпилированную программу включить отладочную информацию - он сможет шагать не по машинным командам, а по строкам вашего исходного текста, и показывать не адреса, а имена меток и переменных
Он понимает не только ассемблерный исходник, но и исходник на Турбо-Си или Турбо-Паскале
Исходный текст и исполнимый файл нужно разместить рядом, имя файла исходного текста прописано в отладочной информации в EXE

Слайд 21

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Исходники ASM

tasm -zi my.asm
tlink -v

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Исходники ASM tasm -zi
my.obj
td my

Вернуться в это окно - F3 или View: Module

Слайд 22

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Переходим в окно CPU

Контекстное меню:

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Переходим в окно CPU
Mixed:
Both - отображать исходный текст вместо дизассемблера, если возможно
No - отображать только результат дизассемблирования
Yes - отображать исходный текст и машинный код, получающийся из него (это особенно интересно для ЯВУ)

Слайд 23

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Используем имя метки

Переходим в окно

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Используем имя метки Переходим
дампа
Goto в контекстном меню
Вводим просто s (имя метки данных строки)

Слайд 24

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Программа на ЯВУ (Паскаль)

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Программа на ЯВУ (Паскаль)

Слайд 25

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Опции компилятора

Options ? Compiler

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Опции компилятора Options ? Compiler

Слайд 26

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Опции отладчика

Options ? Debugger

!

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Опции отладчика Options ? Debugger !

Слайд 27

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Загрузка в отладчик

td mypas.exe

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс Загрузка в отладчик td mypas.exe

Слайд 28

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

Слайд 29

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс

доц. Гольцов А.Г. «Системное программное обеспечение», 3 курс
Имя файла: Отладчик-кодов.pptx
Количество просмотров: 63
Количество скачиваний: 0