Руководство по Soft-ICE (DOS) - 22Delphi , Программа и Интерфейс , Руководство по Soft-ICEРуководство по Soft-ICE (DOS) - 22
По этой причине, хорошая практика - отключать точки останова Soft-ICE как только Soft-ICE поможет вам попасть в точку, где вы хотите осмотреться при помощи вашего отладчика. 11.1.4 Использование Soft-ICE с CODEVIEW Soft-ICE лучше всего работает с CODEVIEW, когда CODEVIEW находится либо в режиме Ассемблера либо в Смешанном режиме. Когда CODEVIEW находится в режиме исходного текста с языками высокого уровня, он не всегда верно прерывается. Когда вы хотите, чтобы Soft-ICE вызывал CODEVIEW, лучше всего использовать ACTION NMI. 11.1.5 Отладчики, Использующие Регистры Точек Останова 80386 80386 имеет 4 регистра точек останова, которые доступны для использования отладчиками. Soft-ICE использует их для своих точек останова на память размером в байт, слово и двойное слово. Если отладчик, который вы используете с Soft-ICE, использует эти отладочные регистры, возникнет конфликт. Есть два способа решения этой проблемы.
1. Отключите использование регистров точек останова 80386 в
отладчике, с которым вы используете Soft-ICE. Проверьте
документацию другого вашего отладчика для получения
описания того, как это сделать. * Вызовите окно Soft-ICE прежде, чем вы запустите другой отладчик. 11.2 Пользовательские Точки Останова Время от времени вам может требоваться очень специфический набор условий точки останова. Если специальные условия требуют ввода значений регистров или памяти, вы можете написать подпрограмму спецификации точки останова. Soft-ICE содержит очень общий механизм для вызова пользовательских подпрограмм спецификации точек останова: команду ACTION. При использовании команды ACTION, Soft-ICE может перенаправить все точка останова на специальный вектор прерывания. Однако, до перенаправления точки останова, в память должна быть помещена подпрограмма спецификации и вектор прерывания должен указывать на подпрограмму спецификации. Все регистры идентичны значениям во время выполнения останова Soft-ICE. Сохранение и восстановление регистров лежит на ответственности подпрограммы спецификации. Если ваша подпрограмма спецификации обнаруживает соответствие условий точка останова, она может выполнить множество действий. Вот некоторые примеры полезных действий, которые подпрограмма может выполнить, когда обнаружено соответствие:
* сохранить информацию на будущее Если условия не выполняются, подпрограмма спецификации должна выполнить команду IRET. Подведем итог:
1. Создайте подпрограмму спецификации точки останова в вашей
области кода или где-нибудь в свободной памяти.
Подпрограмма должна сохранять регистры. После проверки
желаемых условий, подпрограмма может выполнить либо INT 3,
чтобы вызвать Soft-ICE, либо IRET, чтобы продолжить исполнение. 11.2.1 Пример Пользовательской Точки Останова Эта часть содержит пример пользовательской точки останова, которая проверяет условия AX = 3, BX = 4 и CX = 5, когда происходит выполнение точки останова. Сначала мы создаем подпрограмму спецификации. Для целей этого примера, мы будем транслировать команды прямо в память при помощи интерактивного ассемблера Soft-ICE. Для этого примера мы будем произвольно транслировать подпрограмму с ячейки 9000:0H. В Soft-ICE, при этом, вводятся следующие выражения:
Теперь, когда подпрограмма находится в памяти, вы должны направить на нее вектор прерывания. Для этого примера, мы произвольно выбираем INT 99H. Чтобы поместить 9000:0H в вектор INT 99H, введите:
Установите команду ACTION, чтобы Soft-ICE вызывал вашу подпрограмму спецификации точки останова при каждом останове.
Установите I3HERE, чтобы подпрограмма спецификации активизировала Soft-ICE при выполнении условий.
Теперь вы должны установить точки останова. Для этого примера, нас интересует только когда регистры: AX = 3, BX = 4, CX = 5 в специфической программе и нам не нужно никаких дальнейших уточнений. Чтобы это сделать, используйте точку останова на диапазон на чтение памяти:
Это вызовет обращение к вашей подпрограмме спецификации точки останова после выполнения каждой команды в указанном диапазоне памяти. Когда условия по регистрам не выполняются, тогда выполняется команда IRET. Когда условия, наконец, будут соответствовать указанным выражениям, будет выполнен INT 3 и вызван Soft-ICE. Когда вызван Soft-ICE, указатель команд будет указывать на INT3 в вашей подпрограмме спецификации (9000:FH в нашем примере). Чтобы попасть на инструкцию после той, которая вызвала останов, вы должны изменить указатель команд, чтобы он указывал на команду IRET (F000:10H в примере) и выполнить один шаг. Это выполняется при помощи следующих команд Soft-ICE
После выполнения ваших условий останова, не забудьте изменить команду ACTION обратно на ACTION HERE, чтобы последующие точки останова не проходили через вашу подпрограмму спецификации. 11.3 Окно в Графическом Режиме При вызове Soft-ICE экран переключается в текстовый режим. Если экран был в графическом режиме или режиме с 40 столбцами, графический дисплей не видим, то когда окно вызвано. Для пользователей, которые должны видеть графический дисплей при отладке, обеспечиваются три возможности. Первая возможность позволяет выводить окно Soft-ICE на второй монитор (см. команду ALTSCR, часть 5.9). Вторая возможность позволяет вам восстанавливать экран во время выполнения командных шагов P или T (см. команду FLASH, часть 5.9). Третья возможность позволяет вам временно восстанавливать экран программы (см. команду RS, часть 5.9). Если не похоже, что Soft-ICE работает с вашей программой в графическом режиме, пробуйте включать WATCHV (для подробностей см. часть 5.9). 11.4 Возможности Отладки с Отображаемой Памятью Точка останова на диапазон или память, находящаяся в отображаемой области EMM будет оставаться по этому адресу, неважно какая страница EMM отображается. При отладке EMM-программы также может быть очень полезна команда EMMMAP. См. часть 5.6 для большей информации. Для просмотра или изменения любой зарезервированной страницы EMM могут использоваться команды D, E, S, F и C. Страница не обязательно в этот момент должна отображаться. Синтаксис этих команд подобен командам, используемым для не-EMM страниц, кроме следующего: * В командах D, E, S и F адресная часть команды должна быть указана следующим образом:
где указатель - число, определяющее, какой указатель EMM использовать, страница - число, определяющее, какую страницу EMM использовать, и смещение - число от 0 до 4000H, определяющее смещение от начала страницы. Пример:
Эта команда выведет дамп байтов со страницы 3 указателя 1, начиная со смещения 0. * Команда C должна быть указана следующим образом:
где указатель и страница - то же самое, что и выше. смещение1 - число от 0 до 4000H, определяющее смещение от начала страницы, где расположен первый блок данных для сравнения. смещение2 - число от 0 до 4000H, определяющее смещение от начала страницы, где расположен второй блок данных для сравнения. Пример:
Эта команда будет сравнивать первые 10 байтов памяти, расположенных по смещению 0 на странице 4 указателя 2 с первыми 10 байтами памяти, расположенными по смещению 1000 на странице 4 указателя 2. Заметьте: Последующие использования команд D, E, S, F и C будут продолжать использовать последние введенные указатель и страницу. Чтобы вернуться к обычной памяти, используйте одну из вышеупомянутых команд с сегментом, указанным в области адреса, например:
11.5 Возможности Отладки с Расширенной Памятью Команды D, E, S, F и C могут использоваться, чтобы просматривать или изменять расширенную память. Расширенная память, зарезервированная Soft-ICE, не может выводиться на экран. Синтаксис этих команд подобен командам, используемым для стандартной памяти: * В командах D, E, S и F адресная часть команды должна указываться следующим образом: M адрес мегабайта где мегабайт - номер, определяющий какой мегабайт использовать и адрес определяет адрес в указанном мегабайте. Пример:
Эта команда выведет дамп байтов с начала мегабайта, начинающегося с линейного адреса 200000H. * Команда C должна указываться следующим образом:
Где мегабайт и адрес1 - то же, что и выше. адрес2 определяет адрес в указанном мегабайте, где находится второй блок данных для сравнения. Руководство по Soft-ICE (DOS) - 22: настройка и использование отладчика для программирования на языке ассемблера. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Руководство по Soft-ICE ::
|
|||||||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |