Руководство по Soft-ICE (DOS) - 5Delphi , Программа и Интерфейс , Руководство по Soft-ICEРуководство по Soft-ICE (DOS) - 5
Нажмите: ALT D Окно Soft-ICE вернулось. Переместите окно (с использованием CTRL и клавиш стрелок), пока не будет виден экран регистров DEBUG. Настало время установить нашу первую точку останова. Введите:
Сег. кода - значение в регистре CS, показываемое при помощи команды R в DEBUG. Команда BPR устанавливает точку останова на диапазон памяти. Длина сегмента кода Jed'а - 25H байт, так что указанный диапазон памяти продолжается от начала его кода до конца. W сообщает Soft-ICE останавливаться при записи в этот диапазон. Мы хотим перехватить любую неожиданную запись в код Jed'а. Введите:
Команда BL покажет все точки останова. Вывод после команды BL выглядит следующим образом:
0 - идентификатор этой точки останова. Диапазон и W показаны, так как были введены, а счетчик (так как он не был определен) по умолчанию равен 1. Теперь настал момент истины. Нажмите ALT D. Окно снова исчезает. Чтобы запустить SAMPLE из DEBUG, введите:
Нажмите "пробел". Пока все Ok. Теперь нажмите непробельную клавишу. Наша точка останова только что пробудила DEBUG. Выведены регистры и одна дизассемблированная инструкция. Введите:
Адрес - значение регистра IP минус 10 (шестнадцатеричное). Так как DEBUG довольно примитивен, значение регистра IP минус 10 должно быть рассчитано вручную. Указатель инструкции указывает на инструкцию, следующую за той, которая активизировала точку останова. Возвратом на десять (шестнадцатеричных) байт мы синхронизируем DEBUG с нужной нам инструкцией. Инструкция по смещению 3BH:
Jed говорит, "Вот оно! Я так и знал, что проблема была во вспомогательных подпрограммах Jake'а! Инструкция выходящая за его сегмент кода записывает нулевой байт прямо в мой код! Кто мог об этом знать!" Введите:
Местоположение 13H должно являться смещением инструкции условного перехода. Относительное смещение условного перехода устанавливается в ноль. Если вы являетесь гуру в 8086, вы, очевидно, знаете, что JE НИКОГДА не сработает, если относительное смещение - ноль. Какая тонкая ОШИБКА! Теперь давайте разберемся, как эта проблема была бы решена при использовании Soft-ICE как автономного отладчика. Но сначала мы должны выйти из DEBUG. Перед выходом из отладчика будет неплохо дезактивировать все точки останова, если ACTION не установлена на HERE. Если вы это не сделаете, то когда выполнится останов и ACTION попробует вернуться к отладчику, который не загружен, результаты будут непредсказуемы. Мы изменили ACTION на INT3, следовательно, мы должны отменить точку останова. Для вызова окна введите:
Просмотрите список точек останова, введя:
Обратите внимание, что строка описания точки останова выделена. Выделенная точка останова - последняя выполненная точки останова. Заметьте, что номер точки останова - 0. Для дезактивации точки останова с номером ноль, введите:
Снова просмотрите список точек останова, введя:
Звездочка (*) после номера точки останова покажет, что точка останова неактивна. Чтобы удалить точку останова, введите:
Снова введите BL. Обратите внимание, что не выведено ни одной строки с точками останова. Выйдите из Soft-ICE, а потом из отладчика, введя:
Следующий раздел обучающей части демонстрирует, как Soft-ICE может использоваться для решения той же самой проблемы как автономный отладчик. Soft-ICE будет использоваться как отладчик на уровне исходного текста. Для подготовки Soft-ICE производить отладку на уровне исходного текста, он должен быть установлен в вашем файле CONFIG.SYS и часть расширенной памяти должна быть занята для символов и файлов с исходными текстами. Soft-ICE может использоваться как отладчик на уровне исходного текста, только если в вашей системе есть расширенная память. Если у вас нет расширенной памяти вы все равно можете прочитать остаток обучающей части, чтобы увидеть возможности Soft-ICE с расширенной памятью. Если вы не загрузили S-ICE.EXE в ваш файл CONFIG.SYS с памятью, зарезервированной для символов, сделайте это сейчас. Для отладки программы-примера Soft-ICE как автономным отладчиком мы должны использовать загрузчик программ Soft-ICE (LDR.EXE). Чтобы загрузить пример программы (SAMPLE.EXE), файл символов (SAMPLE.SYM) и файл с исходным текстом (SAMPLE.ASM), введите:
Теперь вы - в Soft-ICE с SAMPLE.EXE, загруженным в память. Заметьте что Soft-ICE занимает весь экран. Soft-ICE переключается в полноэкранный режим всякий раз, когда загружается программа. Исходный текст из SAMPLE.ASM должен быть виден в окне кода. Кроме того, видимы окно регистров и окно данных. Выполните одну инструкцию, нажав F10. Обратите внимание, что видео курсор перемещается на следующую инструкцию, которая будет выполнена на следующем шаге программы. Нажмите F6. Это переместит курсор в окно кода. Теперь поэкспериментируйте с клавишами , , PageUp и PageDn, для перемещения курсора и прокрутки исходного файла. Переместите курсор до 42 строки с клавишей . Нажмите F9. Мы только что установили точку останова при выполнении на строку 42. Строка должна выделиться, показывая, что точка останова установлена. Введите:
Это покажет точку останова, которую мы только что установили. Теперь нажмите ALT D. Произойдет выход из Soft-ICE, выполнение программы-примера, пока не произойдет останов в строке 42. Soft-ICE должен немедленно восстановиться, с выделенным видео курсором на строке 42. Снова нажмите F6. Это вернет курсор в командное окно. Теперь введите:
Это уничтожит все точки останова (хотя должна быть установлена только одна). Теперь выйдете из Soft-ICE, нажав ALT D. Вы вернулись к программе-примеру. Нажмите несколько клавиш, чтобы удостовериться, что она все еще не работает. Теперь вызовите Soft-ICE при помощи ALT D. Так как ошибка уже произошла, мы хотим повторно начать программу. Введите:
Эта команда принудительно завершает программу-пример. R сообщает Soft-ICE о необходимости восстановить векторы прерываний в состояние, в котором они были когда была загружена LDR'ом программа-пример. D сообщает Soft-ICE о необходимости удалять все активные точки останова. R и D необязательны в этом случае, но неплохо будет выработать привычку к их указанию при выходе из программы, загруженной LDR.EXE. Теперь вы вернулись к командной строке DOS. Загрузите программу, снова введя:
Заметьте, что сейчас было введено расширение .EXE. Когда указано расширение, Soft-ICE не пытается загружать файл символов или файл с исходным текстом. В нашем случае файлы символов и исходного текста уже - в памяти. Введите:
Будут выведены все публичные символы программы-примера. Нажмите Esc, чтобы вернуться к командной строке. Теперь установим точку останова на диапазон, такую же, как мы устанавливали когда использовали Soft-ICE как дополнение к отладчику. На этот раз мы будем использовать символы, чтобы установить точку останова. Введите:
Это установит точку останова на диапазон на наш сегмент кода от символа START до 82 строки исходного файла. Введите:
Вы можете проверить, что точка останова установлена должным образом. Нажмите ALT D.Нажмите непробельную клавишу. Мы вернулись в Soft-ICE. Заметьте что текущая инструкция (строка с инвертированным видео курсором) - инструкция, идущая после той, что вызвала останов. Чтобы увидеть фактический код нажмите клавишу F3. Это переводит Soft-ICE в смешанный режим. Заметьте, что видео курсор покрывает 2 строки. Это - фактическая строка кода и строка кода из исходного файла с текущей инструкцией. Еще раз нажмите клавишу F3. Сейчас мы - в режиме кода. Никакие исходные строки не видны. Инструкция, находящаяся выше инвертированного видео курсора - инструкция, вызвавшая останов на диапазон. Нажмите клавишу F3 еще раз, чтобы вернуться к режиму исходного текста. Теперь исправим ошибку в программе-примере. Выйдите из программы и вернитесь в командную строку DOS, введя:
Загрузите программу снова, введя:
Установите окно кода в режим кода, дважды нажав клавишу F3. дизассемблируйте неправильную подпрограмму, введя:
Руководство по Soft-ICE (DOS) - 5: управление программой-примером с использованием автономного отладчика. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Руководство по Soft-ICE ::
|
||||||||||||||||||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |