Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Руководство по Soft-ICE (DOS) - 23
Автор: Сергей Середа
WEB-сайт: http://consumer.nm.ru

Invalid user. Replace and strike any key to continue.

Пример:


C M 3 1000:2000 L10 3000:4000

Эта команда будет сравнивать первые 10 байтов памяти, размещенной с 1000:2000, с первыми 10 байтами памяти, размещенной с 3000:4000.

Заметьте:

Последующие использования команд D, E, S, F и C будут продолжать использовать последний указанный мегабайт. Чтобы вернуться к мегабайту 0 (стандартная память), выполните одну из вышеупомянутых команд с 0, указанным как мегабайт, например:


D M 0

ГЛАВА 12

В автономном режиме Soft-ICE может быть мощным инструментом. Эта часть описывает технику отладки компонентов системного уровня, используя Soft-ICE в автономном режиме. При использовании Soft-ICE как автономного отладчика, ACTION должна быть установлена на HERE.

12.1 Загружаемые Драйверы Устройств

Отладка загружаемых драйверов устройств DOS требует отладчика, который не выполняет вызовов DOS. Soft-ICE может использоваться в автономном режиме, если ваш отладчик использует DOS.

Есть два метода отладки загружаемых драйверов устройств: 1. Используйте команду MAP, чтобы найти расположение вашего загружаемого драйвера. Просмотрите заголовок драйвера устройства, чтобы найти точку входа в прерывание или стратегию. Установка точки останова на вход в стратегию или прерывание даст вам контроль над драйвером устройства. Далее трассируйте или устанавливайте точки останова для продолжения отладки. Отладка кода инициализации драйвера устройства требует сброса системы командой BOOT. Используйте вышеописанную методику для установки точки останова в коде драйвера. Команда BOOT будет сохранять Soft-ICE и точки останова.
2. Второй метод требует размещения специального кода в вашем драйвере. Сделайте это при помощи команды I3HERE ON (см. раздел 5.4). Поместите опкод INT 3 (CCH) в ваш драйвер устройства в точке, где необходим контроль. Когда выполняется INT 3, управление переходит к Soft-ICE. Затем вы можете использовать команду R IP для установки указателя команд для переходов до и после опкода INT 3.

Если вы хотите отлаживать вашу последовательность инициализации, удостоверьтесь, что Soft-ICE загружается в CONFIG.SYS до драйвера, который вы пытаетесь отлаживать. Поместите команду I3HERE ON в строку установок в S-ICE.DAT. При этом методе вам не нужно использовать команду BOOT.

Если вы отлаживаете ваш драйвер устройства с символами или по исходному тексту, вы должны загрузить файл символов и исходные файлы отдельно от драйвера устройства. Файл символов и исходные файлы загружаются загрузчиком программ Soft-ICE LDR.EXE. Когда LDR.EXE используется, чтобы загружать только символы и исходный текст, вы должны использовать его в форме:


LDR название-файла.SYM

Должно быть указано расширение файла символов. См. часть 7.4 для больших подробностей относительно LDR.EXE.

После загрузки файла символов и исходных файлов при помощи LDR.EXE вы должны войти в Soft-ICE и переместить символы относительно начала вашего драйвера устройства. Символы перемещаются командой Soft-ICE SYMLOC. Синтаксис команды SYMLOC:


SYMLOC сегмент

Значение сегмента получается из команды MAP. См. описание команды SYMLOC для больших подробностей.

12.2 Программы Начальной Загрузки

Отладка программ начальной загрузки или самозагружающихся программ требует использования Soft-ICE как автономного отладчика. Вы должны сначала загрузить DOS и запустить Soft-ICE. Самый простой метод отладки программ начальной загрузки - установка точки останова на известный адрес в загрузчике и затем использование команды BOOT для сброса системы. Soft-ICE сохраняется во время всего процесса начальной загрузки с установленными точками останова. Если тяжело найти известный адрес, то можно установить точку останова на выполнение в 7C0:0H перед использованием команды BOOT. Это - адрес, по которому ROM BIOS загружает сектор начальной загрузки в память.

Другой метод требует включения режима I3HERE (см. часть 5.4). Поместите опкод INT 3 (CCH) в вашу программу в точке, где необходим контроль. Когда выполняется INT 3, управление приходит к Soft-ICE. Вы также можете использовать как символьную, так и отладку по исходному тексту при отладке программы начальной загрузки. См. команду SYMLOC для большей информации о том, как переместить ваши символы и исходный текст в сегмент, в который загружена ваша программа начальной загрузки.

12.3 Обработчики Прерываний

Soft-ICE позволяет устанавливать точки останова и пошагово выполнять подпрограммы обслуживания аппаратных прерываний (таймер, клавиатура и т.д.). Пошаговое выполнение и установка точек останова в программах обработки прерывания поддерживается Soft-ICE. Вы даже можете трассировать обработчик прерывания клавиатуры, когда Soft-ICE использует клавиатуру для ввода. В большинстве случаев при отладке программ обработки прерываний, Soft-ICE должен использоваться как автономный отладчик. Чтобы установить точку останова на адрес обработчика прерывания, используйте один из следующих методов:

1. Используйте команду вывода двойного слова:

DD номер-прерывания * 4 L 1 Выведенный адрес - адрес первой команды обработчика прерывания. Установите точку останова на выполнения на этот адрес.

2. Используйте команду:


BPINT номер-прерывания

12.4 Операционные Системы, Отличные от DOS (non-DOS)

При помощи Soft-ICE могут отлаживаться операционные системы режима реальной адресации, отличные от DOS. Если операционная система слабо совместима с DOS, вы должны загрузить Soft-ICE под DOS, а затем использовать команду BOOT, чтобы запустить другую операционную систему. Следуйте инструкциям для отладки блоков начальной загрузки и самозагружающихся программ из раздела 12.2.

Команды MAP и WARN могут неправильно функционировать под другими операционными системами, но точки останова и другие отладочные команды будут работать правильно.

При отладке с символами или исходным текстом вы должны загрузить символьные и исходные файлы под DOS или в DOS-совместимом режиме вашей операционной системы.

ГЛАВА 13

13.1 Активизация Других Отладчиков

Soft-ICE работает с большинством других отладчиков, пользуясь преимуществами отладочного прерывания семейства 8086 (INT 3). Большинство отладчиков используют однобайтовую команду INT 3 (CCH) для выполнения точек останова. Целевая команда заменяется на INT 3. Когда выполнение достигает целевого адреса, управление передается обработчику INT 3 отладчика. Затем отладчик заменяет (CCH) на первый байт первоначальной команды.

Когда выполняются точки останова Soft-ICE, в зависимости от команды ACTION, может произойти одно из нескольких событий. Обычно при использовании Soft-ICE с другим отладчиком, ACTION устанавливается на INT3. Когда выполняется условие останова, Soft-ICE передает управление главному отладчику при помощи эмуляции INT 3.

Некоторые отладчики могут работать неправильно при эмуляции INT 3. Для этих отладчиков обеспечены две другие опции ACTION. Это - INT1 и NMI. INT 1 - пошаговое прерывание семейства 8086. Большинство отладчиков будут обрабатывать незапрашиваемый INT 1 как точку останова. NMI поддерживается большинством отладчиков как средство выхода из зависания. Эти отладчики были разработаны для аппаратных переключателей выхода, которые производили немаскируемое прерывание. Когда ACTION установлено на NMI, Soft-ICE эмулирует немаскируемое прерывание (Interrupt2). CODEVIEW работает лучше всего с ACTION, установленным на NMI.

13.2 Основы Виртуальных Машин

Магия Soft-ICE стала возможной из-за возможностей виртуальной машины процессора 80386. Soft-ICE выполняется в защищенном режиме 80386 и управляет окружением DOS. Схема защиты 80386 дает Soft-ICE полный контроль над окружением DOS, в то же время защищая его от "капризных" программ.

Как генерируются точки останова Soft-ICE?

Soft-ICE использует три разных возможности 80386 для создания точек останова:

* Точки останова на ячейку памяти используют регистры останова 80386
* Точки останова на диапазоны памяти используют механизм страничной организации 80386
* Точки останова на команды ввода/вывода используют уровень привилегий ввода/вывода и битовую маску ввода/вывода Как выполняется команда BREAK?

Команда BREAK позволяет использовать клавиатуру для вызова Soft-ICE, даже когда прерывания отключены и система зависла. Soft-ICE виртуализирует механизм прерываний, так что для Soft-ICE прерывания никогда не отключаются, даже когда они отключены для программы DOS, выполняющейся в виртуальной машине.

В режиме BREAK виртуализируются следующие команды, чтобы удостовериться что флаг прерывания никогда не сбрасывается:


PUSHF
POPF
STI
CLI
INT n
IRET

Специальные соображения о виртуальном режиме 8086

Soft-ICE выполняет DOS в виртуальной машине 8086. Эта возможность - главная особенность микропроцессора 80386. При выполнении программ реального режима (DOS и т.д.) в виртуальной машине, программой, контролирующей виртуальную машину, должны эмулироваться некоторые особенности 8086. В нашем случае виртуальную машину контролирует Soft-ICE. Soft-ICE поддерживает следующие особенности:

* Функции прерывания ROM BIOS 15H : 87H, 88H и 89H
* Недокументированная команда loadall
* Управление Адресной Линией 20H
* Команды защищенного режима 80286 и 80386
* Ошибки 80386

Функции прерывания ROM BIOS 15H : 87H, 88H и 89H

Функция BIOS 87H позволяет программе обращаться к памяти выше одного мегабайта на архитектуре IBM AT или Personal Series II через механизм перемещения блоков. Функция 88H возвращает размер расширенной памяти. Эти функции используются драйвером устройства VDISK. Soft-ICE эмулирует эти вызовы BIOS для совместимости с VDISK. Функция 89H обычно используется для перехода в защищенный режим, но Soft-ICE не может позволить этому случиться. Вместо этого возвращает установленный флаг переноса.

Неописанная команда loadall

80286 содержит неописанную команду, называемую loadall. Эта команда первоначально помещалась на чип в диагностических целях и в основном не используется программным обеспечением. Однако, она используется некоторыми версиями RAMDRIVE фирмы Microsoft, который продается с Microsoft Windows и MS-DOS 3.2. Soft-ICE эмулирует loadall, чтобы обеспечить работу RAMDRIVE, однако, невозможно произвести полную эмуляцию этой команды.

Управление Адресной Линией 20H

IBM AT предоставляла специальную особенность, позволяющую некоторым старым программам, которые первоначально были написаны для CP/M функционировать на процессоре 80286. Эта возможность давала обращениям к памяти, возвращающимся в нулевую область на 8086 при выходе за границу мегабайта, работать на 80286. Некоторые программы отключают эту "совместимость", чтобы обращаться к памяти выше одного мегабайта в режиме реальной адресации. Soft-ICE эмулирует эту способность. Она обеспечивается на всех машинах 80386 AT через контроллер клавиатуры и через порт ввода/вывода 92H на PS/2.

Проект Delphi World © Выпуск 2002 - 2024
Автор проекта: USU Software
Вы можете выкупить этот проект.