ГЛАВА 9
Диапазоны Обратной Трассировки
9.1 Введение
9.2 Использование Диапазонов Обратной Трассировки
9.3 Специальные Примечания
197
9.1 Введение
Soft-ICE может собирать информацию об инструкциях в буфер истории обратной
трассировки во время выполнения вашей программы. Затем, после возникновения
ошибки, эти инструкции можно просмотреть. Это позволяет вам вернуться назад и
повторно пройти программу, чтобы определить фактический поток инструкций,
предшествующих точке останова.
Информация об инструкциях собирается при входе в указанный диапазон адресов,
меньший системного. Диапазоны могут быть от 1 байта до 1 мегабайта,
так что если нужно, может быть получена полная системная информация.
Использование определенных диапазонов вместо сбора всех инструкций полезно
по двум причинам:
1. Буфер истории обратной трассировки не забивается
посторонней информацией, которая вас не интересует.
Например, вам может быть неинтересна
обработка прерываний и выполнение в пределах MS DOS.
2. Диапазоны обратной трассировки снижают производительность системы,
когда они активны. Ограничивая диапазон до интересующей
вас области, вы можете намного увеличить
производительность системы.
У Soft-ICE есть два метода использования инструкций в буфере истории обратной
трассировки:
1. Команда SHOW позволяет вам просматривать
инструкции из буфера истории обратной трассировки.
Вы должны указать, на сколько инструкций в буфере
вы хотите вернуться.
2. Команда TRACE позволяет вам вернуться и заново проиграть
инструкции из буфера истории обратной трассировки.
Таким образом вы может видеть исполнение инструкций
в контексте окружения программного кода или исходного текста.
198
9.2 Использование Диапазонов Обратной Трассировки
Чтобы использовать диапазоны обратной трассировки,
вы должны сделать следующее:
1. Зарезервировать буфер истории обратной трассировки желаемого
размера, добавив переключатель /TRA в строку S-ICE.EXE в
CONFIG.SYS. Например, чтобы создать буфер истории обратной
трассировки в 100КБ, вы могли бы иметь следующую строку в
вашем файле CONFIG.SYS: DEVICE = S-ICE.EXE /TRA 100
Буфер истории обратной трассировки в 10КБ зарезервирован
по умолчанию. Если это подходит для ваших потребностей, вы можете
не резервировать больший буфер. Размер буфера истории ограничен
только количеством доступной расширенной памяти.
2. Активизировать диапазоны обратной трассировки, создав точку останова
на диапазон памяти опцией T или TW. Например:
BPR 1000:0 2000:0 T
Опции T и TW не вызывают остановов, вместо этого они собирают
информацию об инструкциях, которая затем может выводиться
командами SHOW или TRACE.
3. Установить любые другие точки останова, если это желательно.
4. Выйти из Soft-ICE командой X.
5. После выполнения останова или если вы вызвали Soft-ICE горячей
клавишей, вы можете просмотреть инструкции из буфера командой
SHOW. Например, чтобы вернуться назад на 50 инструкций
в буфере и вывести на экран инструкций, введите:
SHOW 50
199
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 есть специальный "ГРУБЫЙ" режим для обработки больших диапазонов. Это
ускоряет диапазоны в три или больше раз, но ограничивает количество инструкций
в буфере истории.
Грубый режим собирает только те инструкции, которые производят запись в память
в пределах указанного диапазона. При повторном проходе инструкций в режиме
эмуляции трассировки после "ГРУБОГО" диапазона вы заметите, что ход происходит
скачками вместо последовательного выполнения инструкций.
201
Грубые диапазоны работают лучше всего для больших областей и менее эффективны
для маленьких диапазонов.
Чтобы активизировать "ГРУБЫЙ" диапазон обратной трассировки, используйте
команду BPR с опцией TW вместо опции T. Например:
BPR 1000:0 2000:0 TW
Для дальнейшей информации о диапазонах обратной трассировки см. описания
для команд:
SHOW, TRACE, XT, XP, XG, XRSET, BPR
202
~~\ Перевел Сергей Середа, 1998, Кишинев 24-71-96, /~~
~~\ e-mail: serge_sereda@hotmail.com /~~
[ ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ ]
|