Обзор команд отладчика
Обзор команд отладчика
Вызов отладчика. Вызов отладчика осуществляется клавишами 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 есх переводит курсор прямо к нужному регистру, a r 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 вы найдете в последующих главах.
55
Автору не известно о возможностях использования отладчика в Windows 2000 либо новых версиях, обладающих такими возможностями.