Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Руководство по Soft-ICE (DOS) - 11
Встречаются двое соседей на лестничной площадке. Один возмущается:
- Из вашей квартиры вчера доносились такие крики, будто вы поросенка резали!
- Нет, это я антивирус Касперского запускал.

Пример:


HERE

Этот пример устанавливает точку останова на выполнение на текущую позицию курсора, затем выходит из Soft-ICE и начинает выполнение с текущего CS:IP. Заданная по умолчанию Функциональная клавиша: F7

GENINT

GENINT -- Вызов прерывания

Синтаксис:


GENINT INT1 | INT3 | NMI | номер-прерывания

номер-прерывания -- число в диапазоне 00 - FF

Комментарии:

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

Команда GENINT эмулирует последовательность обработки аппаратного прерывания или команды INT. Она сохраняет флаги, регистр CS и регистр IP, затем изменяет значение регистров CS и IP на значение входа в таблицу векторов прерываний, в соответствии с указанным номером прерывания.

Пример:


GENINT NMI

Это вызывает немаскируемое прерывание. Оно передаст управление обратно CodeView, если Soft-ICE используется как вспомогательное средство для CodeView.

EXIT

EXIT -- Вызывает выход из текущей программы DOS'а

Синтаксис:


EXIT [R] [D]

R -- Восстановить таблицу векторов прерываний
D -- Удалить все точки останова

Комментарии:

Команда EXIT пытается прерывать текущую программу, вызывая функцию выхода DOS (INT 21H, функция 4CH). Эта команда будет работать только если DOS находится в состоянии, когда она способна принять обращение к функции выхода. Если это обращение произведено из некоторых обработчиков прерываний или в других случаях, когда DOS не готова, поведение системы будет непредсказуемо.

Эта функция НЕ производит восстановления системных переменных, кроме таблицы прерываний, при указанной опции R. Это означает что переменные BIOS, видеорежимы и другие данные системного уровня не восстанавливаются.

Использование опции R вызовет восстановление векторов прерываний к значениям которые были в последний раз, когда они были сохранены. Soft-ICE сохраняет векторы прерываний, когда он загружается, когда LDR.EXE загружает программа и когда используется команда VECS S.

Обратите внимание:

Для перезапуска программы, которая была загружена программой-загрузчиком Soft-ICE'а (LDR.EXE) сделайте следующее:


EXIT R
LDR prog.EXE

Команда EXIT восстановит таблицу прерываний к значениям, которые содержались в ней до загрузки программы, затем выйдите к командному процессору. При помощи запуска LDR и указания суффикса .EXE, программа загружается обратно без перезагрузки символов и исходного текста. Символы и исходный текст останутся в памяти.

Внимание:

Команда EXIT должна использоваться с осторожностью. Так как Soft-ICE может быть вызван в любое время, может произойти ситуация, когда DOS не в состоянии принять обращение к функции выхода. Также, команда EXIT не производит никакого специфического программного сброса. Например, команда EXIT не восстанавливает видеорежим. Если ваша программа установила видео BIOS и аппаратные средства в определенный видеорежим, они останутся в этом режиме после команды EXIT.

Пример:


EXIT R

Восстанавливает таблицу прерываниq и выходит из текущей программы. Опция R должна использоваться при выходе из программы, загруженной программным загрузчиком Soft-ICE'а LDR.EXE.

BOOT

BOOT -- Перезагрузка системы (с сохранением Soft-ICE)

Синтаксис:


BOOT

Комментарии:

Команда BOOT перезагружает систему и сохраняет Soft-ICE. BOOT требуется для отладки последовательности начальной загрузки, загружаемых драйверов DOS и операционных систем отличных от DOS (non-DOS).

BOOT выполняется посредством вызова прерывания 19H ROM BIOS. В некоторых случаях память может быть разрушена до такой степени, что прерывание 19 не будет работать. Тогда вызовите Soft-ICE и используйте команду HBOOT.

Для правильной работы BOOT Soft-ICE должен быть установлен как загружаемый драйвер в CONFIG.SYS перед всеми другими драйверами устройств. Так Soft-ICE сможет восстановить первоначальное состояние системы максимально точно.

Пример:


BOOT

Эта команда выполняет перезагрузку системы. Soft-ICE остается резидентным.

HBOOT

HBOOT -- Жесткая перезагрузка системы (общий сброс)

Синтаксис:


HBOOT

Комментарии:

Команда HBOOT сбрасывает всю систему. Soft-ICE не сохраняется в процессе сброса. HBOOT достаточна, если плата адаптера не требует отключения питания. В этом случае, питание машины нужно отключить и затем восстановить.

Пример:


HBOOT

Эта команда производит перезагрузку системы. Soft-ICE должен быть заново загружен.

5.4 Команды Режима Отладки

Команды:

ACTION -- Устанавливает действие после достижения точки останова
WARN -- Устанавливает режим предупреждения повторной входимости DOS/ROM BIOS
BREAK -- Прерывает исполнение в любое время
I3HERE -- Перенаправить прерывание 3 на Soft-ICE

ACTION

ACTION -- Устанавливает действие после достижения точки останова

Синтаксис:


ACTION [INT1 | INT3 | NMI | HERE | int-номер]

int-номер -- Любой допустимый номер прерывания (0-FFH). Используйте эту опцию только если пользовательская подпрограмма-обработчик прерывания перехватила этот вектор прерывания (смотрите раздел 11.2).

Комментарии:

Команда ACTION определяет, куда передается управление, когда выполнены условия точки останова. В большинстве случаев, желательное действие - INT3 или HERE, INT3 обычно используется, если Soft-ICE используется вместе с главным отладчиком, HERE используется, когда желательно вернуться в Soft-ICE при выполнении условий останова, INT1 и NMI - варианты для некоторых отладчиков, которые не работают с опцией INT3. Например, CODEVEW лучше всего работает с ACTION установленным в NMI.

Используйте int-номер, если имеется установленная пользовательская процедура обработки прерывания. Использование int-номера без установленной процедуры пользователя по обработке прерывания вызовет ошибку. Для получения более подробной информации, см. раздел 11.2, 'Пользовательские точки останова'.

Если параметры команды ACTION не указаны, отображается текущее установленное действие.

Заданное по умолчанию действие - HERE.

Пример:


ACTION HERE

Эта команда указывает, что когда будут выполнены условия точки останова, управление вернется Soft-ICE'у.

WARN

WARN -- Устанавливает режим предупреждения повторной входимости DOS/ROM BIOS

Синтаксис:


WARN [ON | OFF]

Комментарии:

Команда WARN предусмотрена для использования Soft-ICE с отладчиками, которые используют DOS и ROM BIOS. Много отладчиков используют DOS и ROM BIOS для вывода на экран и чтения нажатий клавиш. Так как DOS и ROM BIOS не полностью реентерабельны, эти отладчики не могут корректно работать, если останов происходит во время выполнения процедур DOS или ROM BIOS.

Если установлен WARN ON и ACTION - не HERE, то управление перейдет к Soft-ICE до того как действие фактически произойдет. Система отобразит текущий CS:IP и предоставит вам выбор продолжить или вернуться в Soft-ICE. Вообще, вы должны выбрать возврат в Soft-ICE для продолжения вашей работы по отладке. Продолжайте работу с главным отладчиком, только если вы знаете, что ваш отладчик не вызовет повторного вхождения в DOS или ROM BIOS.

Режим WARN должен быть включен при использовании Soft-ICE с DEBUG, SYMDEB и CODEVIEW.

Если параметры не указаны, отображается текущее состояние WARN.

Значение по умолчанию - режим WARN OFF.

Пример:


WARN ON

Эта команда включает режим предупреждения повторной входимости в DOS/ROM BIOS.

BREAK BREAK -- Прерывает исполнение в любое время

Синтаксис:


BREAK [ON | OFF]

Комментарии: Команда BREAK позволяет вызывать окно Soft-ICE, когда система остановлена с заблокированными прерываниями. Режим BREAK может использоваться для всего сеанса отладки или он может включаться и отключаться, когда это требуется.

Режим BREAK немного снижает эффективность системы. Это снижение производительности должно оцениваться с точки зрения необходимости выхода из зависшей программы. Пользователь может хотеть иметь включенный режим BREAK на все время, даже при снижении эффективности, потому что программа может зависнуть в любое время.

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

Если параметры не указаны, отображается текущее состояние BREAK.

Значение по умолчанию - BREAK OFF.

Пример:


BREAK ON

Эта команда включает режим BREAK. Это означает что окно Soft-ICE может быть вызвано в любое время, даже если прерывания заблокированы.

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay