Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

SHOW 50

6. Чтобы повторно проиграть ряд инструкций, вы должны сначала

войти в режим эмуляции трассировки командой TRACE. Чтобы

начать повторно проигрывать последовательность

инструкций, начиная за 50 команд в буфере, введите:

TRACE 50

7. После того, как вы вошли в режим эмуляции трассировки, вы

может проходить через последовательность инструкций,

используя команды XT, XP или XG. Это позволяет

вам повторно активизировать ход программы. Например,

вы можете пошагово пройти последовательность

инструкций в буфере, начинающейся с инструкции,

указанной в командой TRACE, вводя:

XT

XT

.

.

.

XT

Команда XT пошагово проходит через буфер истории

обратной трассировки. Команда XP производит программные

шаги через буфер истории обратной трассировки.

Команда XG проходит программу до адреса в буфере истории

обратной трассировки.

8. Чтобы выйти из режима эмуляции трассировки, введите:

TRACE OFF

9. Для сброса буфера истории обратной трассировки, используйте

команду X.

9.3 Специальные Примечания

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

включая вывод карты памяти и вывод и редактирование данных.

Существующие исключения:

1. Информация о регистрах не сохраняется в буфере истории обратной

трассировки, так что значения регистров не изменяются,

когда вы трассируете буфер, кроме значений CS и IP.

2. Команды, которые обычно вызывают выход из Soft-ICE, не

работают в режиме эмуляции трассировки. Это - X,

T, P, G, EXIT.

Когда вы внимательно просматриваете инструкции из буфера истории обратной

трассировки командами SHOW и TRACE, вы можете заметить странности в выполнении

НЕ нашли? Не то? Что вы ищете?

инструкций. Они вызваны скачками в и вовне указанного диапазона. Они обычно

происходят при переходах, вызовах, возвратах и точках входа. Когда у вас

проблема с зависанием или другая трудная ошибка, требующая диапазонов обратной

трассировки, вы часто можете использовать очень большие диапазоны, чтобы

захватить проблемную область. Как только вы получите лучшее представление

об указанной проблемной области, вы перейдете к меньшим диапазонам.

Большие диапазоны обратной трассировки - очень медленные. Используя большие

диапазоны, вы обычно пытаетесь получить общую идею о том, где проблема. У

Soft-ICE есть специальный "ГРУБЫЙ" режим для обработки больших диапазонов. Это

ускоряет диапазоны в три или больше раз, но ограничивает количество инструкций

в буфере истории.

Грубый режим собирает только те инструкции, которые производят запись в память

в пределах указанного диапазона. При повторном проходе инструкций в режиме

эмуляции трассировки после "ГРУБОГО" диапазона вы заметите, что ход происходит

скачками вместо последовательного выполнения инструкций.

Грубые диапазоны работают лучше всего для больших областей и менее эффективны

для маленьких диапазонов.

Чтобы активизировать "ГРУБЫЙ" диапазон обратной трассировки, используйте

команду BPR с опцией TW вместо опции T. Например:

BPR 1000:0 2000:0 TW

Для дальнейшей информации о диапазонах обратной трассировки см. описания

для команд:

SHOW, TRACE, XT, XP, XG, XRSET, BPR

ГЛАВА 10

10.1 Введение

MagicCV позволяет вам выполнять Microsoft CodeView в менее чем 8КБ

стандартной памяти на вашей ЭВМ 80386.

MagicCVW позволяет вам выполнять Microsoft CodeView для Windows в менее

чем 8КБ стандартной памяти на вашей ЭВМ 80386.

Использование Soft-ICE в комбинации с MagicCV или MagicCVW позволяет вам иметь

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

В оставшейся части этой главы, высказывания о MCV будут применимы как

к MagicCV, так и к MagicCVW, и высказывания о CV будут применимы как

к CodeView, так и к CodeView для Windows.

10.2 Запуск Soft-ICE с MagicCV или MagicCVW

Чтобы использовать Soft-ICE 2.0 и MCV вместе, вы должны установить S-ICE. EXE

как загружаемый драйвер устройства. S-ICE. EXE поступает на дискете Soft-ICE.

S-ICE. EXE заменяет NUMEGA. SYS в CONFIG. SYS. Используйте переключатели /MCV,

/EMM и /EXT как при использовании только MagicCV или MagicCVW. Есть добавочные

переключатели, которые вы можете захотеть использовать с Soft-ICE. Обратитесь

к главе 6 для информации относительно этих переключателей.

Чтобы запустить MagicCV или MagicCVW, после того как Soft-ICE загружен,

обратитесь к вашему руководству по MagicCV или MagicCVW.

Примечания:

MagicCVW требует Soft-ICE версии 2.00 или выше.

MagicCV требует Soft-ICE версии 1.02 или выше. Драйверы S-ICE. SYS и

NUMEGA. SYS отправлялись с некоторыми версиями Soft-ICE. Драйверы

S-ICE и NUMEGA

должны быть заменены S-ICE. EXE до того, как вы сможете запустить MagicCV

и Soft-ICE 2.0 вместе.

10.3 Специальные Соображения

Две Виртуальные Машины

Когда вы используете вместе Soft-ICE и MCV, вы должны иметь в виду, что CV

находится в отдельной виртуальной машине от целевого окружения. Вы можете

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

или когда выполняется целевая программа.

Если вы вызываете Soft-ICE, когда выполняется целевая программа, все работает

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

выполняется CV (обычно при выполнении останова), вы должны иметь в виду

несколько моментов:

* Регистры являются регистрами CV и НЕ МОГУТ

быть изменены.

* Для удобства, команда Soft-ICE, MAP

отображает карту памяти виртуальной машины

целевой программы, а не карту памяти виртуальной

машины CV. Высвеченная область в карте памяти

может быть неправильна.

* Любой вывод или модификация памяти происходит в

виртуальной машине целевой программы.

* У вас нет никакой видимости в виртуальной машине CV

кроме вывода значений регистров.

Не забудьте, что при вызове окна Soft-ICE,

когда активен CV, значения регистров являются

значениями регистров CV и не должны изменяться.

* Когда активен CV, в окне Soft-ICE отключается покомандная и

программная трассировка. Это - чтобы

предотвратить беспорядок, потому что фактически

трассироваться будет CV, а не целевая программа.

Если вы попытаетесь выполнить команду Soft-ICE

Шаг (T) или Программный Шаг (P) когда активен CV,

вы получите предупреждающее сообщение: "Функция

не доступна в виртуальной машине CV". Чтобы

вместо этого трассировать код целевой программы, вы

можете выполнить одну из двух операций:

* Использовать команду трассировки CV. Для этого выйдите

из окна Soft-ICE, используя команду Soft-ICE X,

затем сделайте один или более шагов CV, чтобы

пройти через целевую программу.

* Использовать Soft-ICE, чтобы пройти до адреса

целевой программы, затем использовать команды

Soft-ICE T или P чтобы пройти через вашу целевую

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

командой Soft-ICE X, затем нажимайте клавишу

'F3' пока CV не перейдет в "смешанный режим". Это

позволит вам видеть как исходные строки, так и

адреса команд. Вызовите Soft-ICE. Если

окно Soft-ICE - еще не в узком режиме,

используйте команду Soft-ICE WIN, чтобы

изменить размер окна. Переместите окно Soft-ICE

так, чтобы вы могли видеть адреса команд

в левой стороне экрана. Теперь вы

можете использовать команду Soft-ICE G, чтобы

перейти на один из адресов. Обязательно введите полный адрес,

включая сегмент и смещение.

Затем введите 'G' в окне CV. С этого момента,

CV не активен, так что вы можете использовать

команды Soft-ICE T или P для прохода через

целевую программу.

Команда CodeView SHELL

Если вы выполняете временный выход в DOS из виртуальной машины CodeView,

оболочка DOS - часть виртуальной машины. Из-за этого вы не должны запускать

TSR'ы, когда вы находитесь в оболочке DOS. Если вы это сделаете, когда вы

выйдете из CodeView, TSR исчезнет вместе с виртуальной машиной. Это -

опасно, потому что любой невосстановленный вектор прерывания

может вызвать зависание вашей ЭВМ.

Переключатель CV /R

Soft-ICE пользуется преимуществами многих возможностей 80386, включающих

регистры отладки 80386. Это значит, что регистры отладки не доступны для CV,

так что вы не можете использовать переключатель CV /R при запуске с Soft-ICE.

Если вы используете переключатель /R, Soft-ICE выдаст вам общую ошибку защиты.

В этот момент вы можете нажать 'C', чтобы продолжить, затем повторно запустить

CV без переключателя /R и использовать точки останова Soft-ICE.

Переключатель CV /R работает, когда вы выполняете MCV без Soft-ICE.

10.4 Команда Soft-ICE ACTION

Команда ACTION предоставляет три различных метода активизации CV из точки

останова Soft-ICE. Лучший выбор действия - ACTION NMI. Если вы испытываете

проблемы с ACTION, установленным в NMI ( обычно потому что плата адаптера в

вашей системе использует NMI ), используйте ACTION INT1.

РАЗДЕЛ IV - Дополнительные Темы

ГЛАВА 11

11.1 Использование Soft-ICE с другими Отладчиками

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

отладчик предлагает разные возможности и, следовательно, требует специальной

обработки. Этот раздел опишет способы эффективного использования отладчиков.

11.1.1 Отладчики, Использующие DOS

Много отладчиков используют DOS и ROM BIOS, чтобы выполнять их экранный и

клавиатурный ввод/вывод. При использовании этих отладчиков с Soft-ICE (напр.,

DEBUG, SYMDEB и CODEVIEW) должны иметься ввиду определенные соображения, т. к.

DOS и ROM BIOS не полностью реентерабельны. Если останов происходит во время

исполнения кода DOS или BIOS, может возникнуть проблема повторной входимости.

Soft-ICE обеспечивает опциональное предупреждение о повторной входимости,

активируемое командой WARN. Когда включен режим WARN, Soft-ICE проверяет DOS и

ROM BIOS на повторную входимость до выполнения ACTION, активизирующего главный

отладчик. Когда обнаружена проблема повторной входимости, Soft-ICE выводит

предупреждающее сообщение и предлагает вам выбор : продолжить выполнение кода

или вернуться в Soft-ICE.

Обратите внимание, что сам Soft-ICE не использует вызовы DOS или ROM BIOS

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

любое время, не волнуясь о проблемах повторной входимости.

Для большей информации о команде WARN, см. часть 5.4.

11.1.2 Команда ACTION с другими Отладчиками

Различные отладчики используют разные методы активизации. Для описания этих

методов см. часть 13.1.

Если вы хотите возвращаться к вашему отладчику после выполнения останова, вы

должны изменить ACTION (см. раздел 5.4) для работы с вашим отладчиком.

В большинстве случаев действие, которое должно выполняться после останова, -

INT3. Так DEBUG и SYMDEB будут работать лучше всего с ACTION, установленным

на INT3.

Если INT3 не работает с вашим отладчиком, попробуйте INT1 или NMI. CODEVIEW

работает лучше всего с ACTION, установленным на NMI.

11.1.3 Специальные Соображения

Когда установлена точка останова, вы должны быть осторожны, чтобы случайно

ее не вызвать. Так, если вы установите точку останова в памяти в 0:0,

затем используйте ваш отладчик для просмотра дампа памяти в 0:0, будет

вызван Soft-ICE. Если ACTION установлено на вызов вашего отладчика, тогда ваш

отладчик вызовет сам себя. Так как некоторые отладчики - нерентерабильны,

это может быть фатальной проблемой. Эта проблема может также возникнуть с

другими функциями отладки типа редактирования или дизассемблирования.

По этой причине, хорошая практика - отключать точки останова 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. Проверьте

документацию другого вашего отладчика для получения

описания того, как это сделать.

2. Некоторые отладчики автоматически используют регистры точек

прерывания, если они обнаруживают процессор 80386 без методов

их отключения (это делают некоторые версии SYMDEB).

Для этих отладчиков сделайте следующее:

* Вызовите окно Soft-ICE прежде, чем вы запустите

другой отладчик.

* Включите режим BREAK Soft-ICE'а командой

BREAK (вы можете захотеть сделать это в

выражении инициализации в S-ICE. DAT, если вы

часто это делаете).

* Запустите ваш другой отладчик.

* При желании вы теперь можете вызвать окно

Soft-ICE и отменить режим BREAK Soft-ICE.

11.2 Пользовательские Точки Останова

Время от времени вам может требоваться очень специфический набор условий

точки останова. Если специальные условия требуют ввода значений регистров или

памяти, вы можете написать подпрограмму спецификации точки останова.

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

подпрограмм спецификации точек останова: команду ACTION. При использовании

команды ACTION, Soft-ICE может перенаправить все точка останова на специальный

вектор прерывания. Однако, до перенаправления точки останова, в память должна

быть помещена подпрограмма спецификации и вектор прерывания должен указывать

на подпрограмму спецификации.

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

Сохранение и восстановление регистров лежит на ответственности подпрограммы

спецификации. Если ваша подпрограмма спецификации обнаруживает соответствие

условий точка останова, она может выполнить множество действий. Вот некоторые

примеры полезных действий, которые подпрограмма может выполнить, когда

обнаружено соответствие:

* сохранить информацию на будущее

* послать информацию прямо на принтер или последовательный

терминал

* выполнить команду INT 3, чтобы вызвать Soft-ICE

Команда I3HERE должна быть включена, чтобы

INT 3 вызывал Soft-ICE (см. часть 5.4).

Если условия не выполняются, подпрограмма спецификации должна выполнить

команду IRET. Подведем итог:

1. Создайте подпрограмму спецификации точки останова в вашей

области кода или где-нибудь в свободной памяти.

Подпрограмма должна сохранять регистры. После проверки

желаемых условий, подпрограмма может выполнить либо INT 3,

чтобы вызвать Soft-ICE, либо IRET, чтобы продолжить исполнение.

2. Направьте неиспользуемый вектор прерывания на вашу подпрограмму

спецификации. Это может быть выполнено либо из вашего кода

либо из Soft-ICE.

3. В Soft-ICE установите ACTION на номер-прерывания, который был

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

4. В Soft-ICE установите I3HERE ON. Это необходимо, чтобы вызвать

Soft-ICE после того, как были выполнены условия.

5. Установите общие условия точки останова Soft-ICE.

Когда выполнится любое из этих условий точки останова,

будет вызвана ваша подпрограмма спецификации.

11.2.1 Пример Пользовательской Точки Останова

Эта часть содержит пример пользовательской точки останова, которая

проверяет условия AX = 3, BX = 4 и CX = 5, когда происходит выполнение

точки останова.

Сначала мы создаем подпрограмму спецификации. Для целей этого примера,

мы будем транслировать команды прямо в память при помощи интерактивного

ассемблера Soft-ICE. Для этого примера мы будем произвольно транслировать

подпрограмму с ячейки 9000:0H. В Soft-ICE, при этом, вводятся следующие

выражения:

A 9000:0

9000:0 CMP AX,3

9000:3 JNE 10

9000:5 CMP BX,4

9000:7 JNE 10

9000:A CMP CX,5

9000:D JNE 10

9000:F INT3

9000:10 IRET

Теперь, когда подпрограмма находится в памяти, вы должны направить на нее

вектор прерывания. Для этого примера, мы произвольно выбираем INT 99H. Чтобы

поместить 9000:0H в вектор INT 99H, введите:

ED 0:99*4 9000:0

Установите команду ACTION, чтобы Soft-ICE вызывал вашу подпрограмму

спецификации точки останова при каждом останове.

ACTION 99

Установите I3HERE, чтобы подпрограмма спецификации активизировала Soft-ICE

при выполнении условий.

I3HERE ON

Теперь вы должны установить точки останова. Для этого примера, нас

интересует только когда регистры: AX = 3, BX = 4, CX = 5 в специфической

программе и нам не нужно никаких дальнейших уточнений. Чтобы это сделать,

используйте точку останова на диапазон на чтение памяти:

BPR сегмент:начальное-смещения сегмент:конечное-смещение

Это вызовет обращение к вашей подпрограмме спецификации точки останова после

выполнения каждой команды в указанном диапазоне памяти. Когда условия по

регистрам не выполняются, тогда выполняется команда IRET.

Когда условия, наконец, будут соответствовать указанным выражениям, будет

выполнен INT 3 и вызван Soft-ICE.

Когда вызван Soft-ICE, указатель команд будет указывать на INT3

в вашей подпрограмме спецификации (9000:FH в нашем примере). Чтобы попасть на

инструкцию после той, которая вызвала останов, вы должны изменить

указатель команд, чтобы он указывал на команду IRET (F000:10H в

примере) и выполнить один шаг. Это выполняется при помощи следующих

команд Soft-ICE

RIP IP + 1

T

После выполнения ваших условий останова, не забудьте изменить команду 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 адресная

часть команды должна быть указана

следующим образом:

Hуказатель# Pстраница# смещение

где указатель - число, определяющее, какой указатель

EMM использовать, страница - число, определяющее, какую

страницу EMM использовать, и смещение - число от 0

до 4000H, определяющее смещение от начала

страницы.

Пример:

DB H1 P3 0

Эта команда выведет дамп байтов со страницы 3

указателя 1, начиная со смещения 0.

* Команда C должна быть указана следующим

образом:

C Hуказатель# Pстраница# смещение1 Lдлина смещение2

где указатель и страница - то же самое, что и выше.

смещение1 - число от 0 до 4000H, определяющее

смещение от начала страницы, где расположен

первый блок данных для сравнения. смещение2 -

число от 0 до 4000H, определяющее смещение

от начала страницы, где расположен второй

блок данных для сравнения.

Пример:

C H2 P4 00 L10 1000

Эта команда будет сравнивать первые 10 байтов памяти,

расположенных по смещению 0 на странице 4 указателя 2

с первыми 10 байтами памяти, расположенными по смещению

1000 на странице 4 указателя 2.

Заметьте:

Последующие использования команд D, E, S, F и C будут продолжать использовать

последние введенные указатель и страницу. Чтобы вернуться к обычной памяти,

используйте одну из вышеупомянутых

команд с сегментом, указанным в области адреса, например:

D 0:0

11.5 Возможности Отладки с Расширенной Памятью

Команды D, E, S, F и C могут использоваться, чтобы просматривать или изменять

расширенную память. Расширенная память, зарезервированная Soft-ICE, не может

выводиться на экран. Синтаксис этих команд подобен командам, используемым

для стандартной памяти:

* В командах D, E, S и F адресная

часть команды должна указываться

следующим образом:

M адрес мегабайта

где мегабайт - номер, определяющий какой

мегабайт использовать и адрес определяет адрес

в указанном мегабайте.

Пример:

DB M 2 0:0

Эта команда выведет дамп байтов с начала

мегабайта, начинающегося с линейного адреса 200000H.

* Команда C должна указываться следующим

образом:

C M мегабайт адрес1 L длина адрес2

Где мегабайт и адрес1 - то же, что и выше.

адрес2 определяет адрес в указанном мегабайте,

где находится второй блок данных

для сравнения.

Пример:

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.

Команды защищенного режима 80286 и 80386

Некоторые специфические программы AT использовали команды защищенного режима

80286. С появлением 80386 некоторые программы 80386 используют команды

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

Soft-ICE обеспечивает стандартные расширения режима реальной адресации,

которые фирма Intel включила в процессоры 80186 и 80286 (PUSHALL, POPALL и

т. д.), но не команды защищенного режима типа LGDT, LMSW и т. д.

Ошибки 80386

Есть несколько ошибок в работе чипа 80386. Большинство этих ошибок относятся

только к программному обеспечению защищенного режима (типа Soft-ICE).

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6