
Рис. 4.4.12. Окно отладчика SoftIce.
Обзор команд отладчика
- Вызов отладчика. Вызов отладчика осуществляется клавишами
Ctrl+D
, повторное нажатие этих клавиш приводит к закрытию отладчика. Закрытие окна отладчика можно осуществить и клавишейF5
. - Помощь. Для получения списка всех команд наберите в командном окне команду
"
h
". Для получения информации по конкретной команде наберите "h <команда>
". Нижняя часть командного окна - панель помощи. В ней появляются подсказки. Например, если Вы введете букву "w
" (на эту букву начинаются оконные команды) на панели появится список команд, начинающихся на "w
". - Работа с окнами. При вызове отладчика на экране появляется его окно (см.
Рис. 4.4.12.), разделенное на несколько окон, каждое из которых несет на себе
определенную информационную нагрузку. Количество и размер этих окон определяется
начальной установкой (см. начало), но может меняться по нашему желанию. Для
ввода команд существует командное окно. Обычно курсор находится именно в
командном окне. Каждое окно имеет свое мнемоническое обозначение, например
"
c
" - окно кода, "d
" - окно данных, "r
" - окно регистров, "f
" - окно сопроцессора, "w
" - окно наблюдения за переменными, "s
" - окно стека, "l
" - окно локальных переменных, "x
" - окно регистров Pentium III. В часть окон можно перейти командойAlt+"мнемоническое обозначение окна"
. Перейти можно в каждое такое окно, выяснить это, как Вы понимаете, достаточно просто. Обратный переход осуществляется той же командой. Для создания соответствующего окна, если оно отсутствует, используются команды, в которых первым идет символ "w
", вторым символом является символ, обозначающий окно. Например, если у Вас нет на экране окна данных, то создать его можно командойwd
, та же команда удалит окно данных из перечня показываемых окон. Высота окна определяется параметром данной команды, напримерwc 20
. Запомните еще несколько полезных команд.Ctrl+"стрелка вверх-вниз"
- скроллинг окна кода,Alt+"стрелка вверх-вниз"
- скроллинг окна данных,Alt+Ctrl "стрелка вверх-вниз, вправо-влево"
- передвижение самого окна отладчика. - Просмотр кода и данных. Один способ передвижения, а значит и просмотра, Вы
уже знаете: скроллинг окна кода осуществляется клавишами
Ctrl+<стрелка вниз, стрелка вверх>
(Alt
для окна данных). Наиболее удобной является команда "U
". Общий формат этой команды:U [address [length]] | [name]
.Address
- адрес непосредственный или определяемый через регистр,length
- число выводимых байт,name
- осуществлять скроллинг, пока не встретится данное имя. Например,u ebx -20
- вывести инструкции, начиная с адреса за 20 байт до адресаCS:EBX
. Пустая командаu
выводит коды, начиная сCS:EIP
. Если вторым параметром идетl
, то вывод осуществляется в командное окно. Аналогично для окна данных работает командаD
, формат которой имеет вид:D [address], [length]
. Например,d 100, 100
илиd eax
. Положим, видя команду типаMOV EAX,[EBX-10]
, мы можем посмотреть область данных, откуда берется значениеEAX
:d ebx-10
. - Просмотр - модификация регистров. Переход к окну регистров, как уже было
сказано, может быть осуществлено командой
Alt+r
. Находясь в окне. Вы можете вместе с тем менять содержимое регистров. К аналогичному результату можно прийти, просто выполнив в командной строке команду "R
". Возможна также команда видаr reg=знач
. Например,r еах=10
. Ключ-d
позволяет выводить содержимое регистров в командное окно. Командаr есх
переводит курсор прямо к нужному регистру, ar fl
- прямо к регистру флагов. Команда видаr fl=o+a-p
— устанавливает флаги "o
" и "a
" и сбрасывает флаг "p
". - Трассировка кода. Горячие клавиши:
F8
- выполнение инструкции с заходом в процедуру,F10
- выполнение инструкции с обходом процедуры,F7
- выполнить инструкции до текущей команды (если Вы находитесь в окне кода). Нажатие клавишиF7
эквивалентно командеHERE
. КлавишаF12
- выполнять код, пока не встретится командаRET
(командаP
с параметромRET
).F11
- вернуться к последней выполненной командеCALL
. В командной строке Вы можете использовать командуT
, которая имеет следующий формат:Т [=address] [count]
. Здесьaddress
- адрес, с которого начинается выполнение,count
- количество шагов. - Точки останова. Самое мощное и удобное средство отладки программы SoftIce.
- Обычные точки останова. Список точек останова можно просмотреть при помощи
команды
BL
. Каждой точке останова ставится в соответствие номер, который Вы увидите в списке. Удалить точку останова из списка можно командойВС <номер или список>
. Все точки останова можно удалить командойВС *
. Находясь в окне кода, Вы можете поставить точку останова, нажав клавишуF9
, строка при этом будет подсвечена. Повторное нажатие клавишиF9
снимает точку останова с текущей строки. КомандаBD
снимает точку останова, но не удаляет ее из списка, командаBE
вновь активизирует точку останова. Поставить точку останова можно также командойbpx addess
. - Точки останова на функции API. Например,
bpx MessageBoxA
поставит точку останова на любой вызов данной функции. Для того чтобы проверить, распознает отладчик функции данной группы, выполните командуexp MessageBox
, при этом в командное окно будет выведен соответствующий список. - Точки останова с условием. Общий формат команды
bpx
имеет вид:BPX [address] [if expression] [do "command1; command2.."]
. Таким образом, точка останова сработает только при выполнении условия. При этом будет выполнена последовательность команд отладчика. Например, возможно такое выражение:BPX eip if eax=10 do "db bx"
. - Точки останова на сообщения. Точку останова на сообщения можно поставить при
помощи команды
bmsg
. При этом надо знать дескриптор окна. Но на это есть специальная командаhwnd
, которая дает список окон, их дескрипторов и адресов их процедур. Например,BMSG 0b0f wm_destroywindow
означает установить точку останова на сообщениеWM_DESTROYWTNDOW
, приходящее на окно с дескриптором0b0fh
. Поскольку сообщения представляют собой определенные целые числа, можно через пробел указывать диапазон сообщений. Кроме того, точка останова может быть дополнена условием (if
) и набором команда (do
).
- Обычные точки останова. Список точек останова можно просмотреть при помощи
команды
- Другие команды. Команд в SoftIce неисчислимое количество, точнее около 200.
Вы можете посмотреть описание их в документации, которая прилагается к пакету,
либо выполнив в командной строке команду
h
(F1
). Поражает обилие команд для получения системной информации. Думаю, что во всех этих возможностях Вы разберетесь сами.
Примеры использования программ W32Dasm и SoftIce вы найдете в последующих главах.
Автору не известно о возможностях использования отладчика в Windows 2000 либо новых версиях, обладающих такими возможностями.