скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Руководство по Soft-ICE (DOS) - 7


- Может ли человек умереть от компьютерного вируса?
- Смотря чей компьютер он им заразит.


BPM DS:1000 W GT 5

Эта команда определяет точку останова на запись байта в память. Останов произойдет когда первый раз в ячейку DS:1000 произойдет запись значения, большего чем 5.


BPR

BPR -- Устанавливает точку останова на диапазон памяти

Синтаксис:


BPR адрес-начала адрес-конца [опция] [C=счетчик]

адрес-начала, адрес-конца -- адрес начала и адрес конца определяют диапазон памяти. опция - R, W, RW, T или TW

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

Команда BPR позволяет устанавливать точку останова на диапазон памяти.

Все типы опций, кроме T или TW, заставляют программу выполнять инструкцию, вызвавшую останов. Текущий CS:IP будет указывать на следующую за точкой останова инструкцию.

Это - не точка останова на выполнение. Если нужно, чтобы происходил останов при выполнении в диапазоне, должен использоваться R. Для точек останова на диапазон выполнение инструкции рассматривается как чтение.

Если опция не определена, по умолчанию принимается W.

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

Опции T и TW дают возможность обратной прогонки в указанном диапазоне. Они не вызывают останова, но вместо этого сохраняют информацию об инструкциях, которая может быть выведена позже командами TRACE или SHOW. Для получения большей информации об обратной трассировке, см. главу 9.

Пример:


BPR B000:0 B000:1000 W

Эта команда определяет точку останова на диапазон памяти. Останов произойдет, если произойдет любая запись в область видеопамяти монохромного адаптера.


BPIO

BPIO -- Устанавливает точку останова на доступ к порту ввода/вывода

Синтаксис:


BPIO порт [опция] [значение определителя] [C=счетчик]

порт -- Значение длиной в байт или слово
опция -- R, W или RW
R -- Чтение (IN)
W -- Запись (OUT)
определитель -- EQ, NE, GT, LT, M
EQ -- Равно
NE -- Не Равно
GT -- Больше
LT -- Меньше
M -- Маска
значение -- Значение длиной в байт или слово

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

Команда BPIO позволяет устанавливать точку останова на чтение или запись в порт ввода/вывода.

Если указано значение, оно сравнивается с фактически считываемыми или записываемыми данными, вызвавшей останов, инструкцией IN или OUT. Значение может быть байтом или словом. Если ввод/вывод происходит в байтовый порт, при сравнении используются младшие 8 битов.

Указатель инструкции (CS:IP) будет указывать на следующую инструкцию за вызвавшей останов инструкцией IN или OUT.

Если опция не определена, по умолчанию принимается RW.

Пример:


BPIO 21 W NE FF

Эта команда определяет точку останова на доступ к порту ввода/вывода. Останов произойдет, если в регистр маски первого контроллера прерываний будет записано значение, отличное от FFH.


BPIO 3FE R EQ M 11XX XXXX

Эта команда определяет байтовую точку останова на чтение из порта ввода/вывода. Останов произойдет при первом считывании из порта ввода/вывода 3FE значения, у которого два старших бита установлены в 1. Другие биты могут принимать любые значения.


BPINT

BPINT -- Устанавливает точку останова на прерывание

Синтаксис:


BPINT номер-прерывания [< AL | AH | AX >= значение] [C = счетчик]

номер-прерывания -- Номер прерывания из 0 - FF hex
значение -- Значение длиной в байт или слово

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

Команда BPINT позволяет производить останов при выполнении аппаратного или программного прерывания. Указывая как необязательный параметр значение регистра AX, можно легко выделить определенные вызовы DOS или BIOS.

Если значение не определено, останов произойдет при выполнении прерывания, определенного номером-прерывания. Это прерывание может быть аппаратным, программным или внутренним прерыванием.

При выполнении прерывания необязательное значение сравнивается с указанным регистром (AH, AL или AX). Если значение соответствует указанному регистру, происходит останов.

Когда происходит останов, если прерывание было аппаратным, указатель инструк- ции (CS:IP) будет указывать на первую инструкцию в процедуре обработки преры- вания. Чтобы узнать, где происходило выполнение программы, когда произошло прерывание, может использоваться команда INT?. Если прерывание было программным, то при останове указатель инструкции (CS:IP) будет указывать на инструкцию INT, вызвавшую останов.

Пример:


BPINT 21 AH=4C

Эта команда определяет точку останова на прерывание 21H. Останов произойдет, когда будет вызвана функция DOS 4CH (завершить программу).


BPX

BPX -- Устанавливает/удаляет точку останова на выполнение

Синтаксис:


BPX [адрес] [C=счетчик]

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

Команда BPX позволяет устанавливать или удалять точку останова типа point-and- shoot на выполнение в исходном тексте. Когда курсор находится в окне кода, адрес не требуется. Точка останова на выполнение устанавливается по адресу текущего положения курсора. Если точка останова на выполнение уже была установлена по адресу текущего положения курсора, то она будет удалена.

Если окно кода не видимо или курсор - не в окне кода, то должен быть определен адрес. Если определено только смещение, то в качестве сегмента используется текущее значение регистра CS.

Техническое Примечание: BPX использует для точек останова стиль прерывания 3, если указанный адрес не принадлежит ROM. Это используется вместо регистра точек останова, чтобы предоставить больше точек останова на выполнение. Если в ваших обстоятельствах по некоторым причинам требуется использование регистра точек останова (например, код не загружен) вы можете установить точку останова командой BPM.

Пример:


BPX.1234

Устанавливает точку останова на выполнение в строку 1234 исходного текста.


CSIP

CSIP -- Устанавливает определитель диапазона CS:IP

Синтаксис:


CSIP [OFF | [NOT] адрес-начала адрес-конца]

NOT -- Когда указан NOT, останов произойдет только если указатель CS:IP выйдет из указанного диапазона.
OFF -- Отменяет проверку CS:IP

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

Команда CSIP вызывает останов, зависящий от положения указателя инструкций, когда будут выполнены условия точки останова. Эта функция часто полезна, когда программа подозревается в случайном изменении кода вне своих границ.

Когда выполнены условия точки останова, регистры CS:IP сравниваются с указанным диапазоном. Если они - в пределах диапазона, точка останова активизируется. Для активизации останова, когда CS:IP - вне диапазона, используйте параметр NOT.

Когда определен диапазон CSIP, он применяется ко ВСЕМ точкам останова, которые активны в настоящее время.

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

Пример:


CSIP NOT F000:0 FFFF: 0

Эта команда вызывает останов, который произойдет только если CS:IP НЕ указывают в область ROM BIOS когда выполнены условия точки останова.


BPAND

BPAND -- Ожидает срабатывания многих точек останова

Синтаксис:


BPAND список | * | OFF

список -- Ряд номеров-останова, разделенных запятыми или пробелами
* -- Складывает по AND'у все точки останова

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

Команда BPAND производит логическую операцию AND над двумя и более точками останова, вызывая останов только, когда выполнены условия для всех точек останова.

Иногда условия останова возникают, когда он вам не нужен, пока не будут выполнены несколько различных условий. Команда BPAND позволяет определять две или более точек останова, которые должны произойти перед производимым действием. Эта функция позволяет устанавливать точки останова по более сложным условиям.

Каждый раз, когда используется команда BPAND, указанные номера точек останова добавляются к списку, пока не будет использована BPAND OFF.

Вы можете увидеть какие из номеров-останова объединены по AND'у, просматривая список точек останова командой BL. Номера точек останова, объединенных по AND'у, будут заканчиваться амперсантом (&).

Один раз объединенные по AND'у, точки останова остаются объединенными, пока не будут удалены или пока BPAND не будет отключен.

Пример:


BPAND 0,2,3

Эта команда логически связывает условия точек останова 0, 2 и 3 между собой. Останов происходит, только когда выполнены условия всех трех. Например, если, по крайней мере, однажды выполнены условия точек останова 2 и 3, но условия точки останова 0 пока не выполнены вообще, то действие не произойдет, пока не будут выполнены условия точки останова 0.






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook