Использование команд отладчика

Здесь описывается использование команд отладчика. WinDbg — это отладчик, который можно использовать для анализа аварийных дампов, отладки динамического кода в пользовательском режиме и режиме ядра, а также проверки регистров ЦП и памяти. Дополнительные сведения см. в статье Общие сведения о WinDbg.

Сведения об установке отладчика см. в статье Установка отладчика Windows.

Чтобы приступить к работе с WinDbg, см. статью начало работы с отладкой Windows.

Командное окно отладчика WinDbg

Для WinDbg "Командное окно отладчика" относится к окну с меткой "Command" в строке заголовка. Это окно содержит две области:

  • В маленькой нижней области введите команды.

  • На большой верхней панели отображаются выходные данные команды.

Это окно всегда открыто в начале сеанса отладки. Вы можете повторно открыть это окно или переключиться в это окно, выбрав команду в меню Вид , нажав клавиши ALT+1 или нажав кнопку Command (ALT+1) (Снимок экрана: кнопка командного окна отладчика).

Для прокрутки журнала команд можно использовать клавиши СТРЕЛКА ВВЕРХ и СТРЕЛКА ВНИЗ. При появлении предыдущей команды ее можно изменить, а затем нажать клавишу ВВОД, чтобы выполнить предыдущую команду (или измененную версию предыдущей команды). Для правильной работы этой процедуры курсор не обязательно должен находиться в конце строки.

KD или CDB

Для KD или CDB "Командное окно отладчика" относится ко всему окну. Команды введите в командной строке в нижней части окна. Если команды имеют какие-либо выходные данные, в окне отображаются выходные данные, а затем снова отобразится запрос.

Командная строка окна отладчика

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

2:005>

В предыдущем примере 2 — это номер текущего процесса, а 005 — номер текущего потока.

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

3:2:005>

В этом примере 3 — это текущий системный номер, 2 — номер текущего процесса, а 005 — номер текущего потока.

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

kd>

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

0: kd>

Если отладчик занят обработкой ранее выданной команды, новые команды временно не обрабатываются, хотя их можно добавить в буфер команд. Кроме того, вы по-прежнему можете использовать клавиши управления в KD и CDB, а также команды меню и сочетания клавиш в WinDbg. Если KD или CDB находится в этом состоянии занятости, запрос не отображается. Если WinDbg находится в этом состоянии занятости, вместо запроса появится следующий индикатор:

*BUSY*

Чтобы добавить текст в эту строку, можно использовать команду .pcmd (Set Prompt Command).

Типы команд

WinDbg, KD и CDB поддерживают различные команды. Некоторые команды совместно используются отладчиками, а некоторые доступны только в одном или двух отладчиках.

Некоторые команды доступны только при динамической отладке, а другие — только при отладке файла дампа.

Некоторые команды доступны только во время отладки в пользовательском режиме, а другие — только во время отладки в режиме ядра.

Некоторые команды доступны только в том случае, если целевой объект выполняется на определенных процессорах. Дополнительные сведения обо всех командах и их ограничениях см. в разделе Команды отладчика.

Изменение, повторение и отмена команд

Стандартные ключи редактирования можно использовать при вводе команды:

  • Используйте клавиши СТРЕЛКА ВВЕРХ и СТРЕЛКА ВНИЗ, чтобы найти предыдущие команды.

  • Измените текущую команду с помощью клавиш BACKSPACE, DELETE, INSERT, СТРЕЛКА ВЛЕВО и СТРЕЛКА ВПРАВО.

  • Нажмите клавишу ESC, чтобы очистить текущую строку.

Вы можете нажать клавишу TAB, чтобы автоматически заполнить текст. В любом из отладчиков нажимайте клавишу TAB после ввода хотя бы одного символа, чтобы автоматически завершить команду. Нажмите клавишу TAB несколько раз, чтобы выполнить циклический переход по параметрам завершения текста, а затем, удерживая нажатой клавишу SHIFT, нажмите клавишу TAB для перехода назад. Вы также можете использовать подстановочные знаки в тексте и нажать клавишу TAB, чтобы развернуть полный набор параметров завершения текста. Например, если ввести fo*!ba и нажать клавишу TAB, отладчик развернется до набора всех символов, начинающихся с "ba", во всех модулях с именами модулей, которые начинаются с "fo". В качестве другого примера можно выполнить все команды расширения, в которых есть "prcb", введя !*prcb и нажав клавишу TAB.

При использовании клавиши TAB для завершения текста, если фрагмент текста начинается с точки (.), текст сопоставляется с точечной командой. Если фрагмент текста начинается с восклицательного знака (!), текст сопоставляется с командой расширения. В противном случае текст сопоставляется с символом . При использовании клавиши TAB для ввода символов нажатие клавиши TAB завершает код, ввод символов и имен модулей. Если имя модуля не отображается, локальные символы и имена модулей заполняются. Если задан модуль или шаблон модуля, завершение символов завершает код и символы типа из всех совпадений.

Вы можете выбрать и удерживать (или щелкнуть правой кнопкой мыши) в окне Команда отладчика, чтобы автоматически вставить содержимое буфера обмена в вводимую команду.

Максимальная длина команды — 4096 символов. Однако если вы управляете отладчиком пользовательского режима из отладчика ядра, максимальная длина строки составляет 512 символов.

В CDB и KD нажмите клавишу ВВОД, чтобы повторить предыдущую команду. В WinDbg это поведение можно включить или отключить. Дополнительные сведения об этом поведении см. в разделе ВВОД (повтор последней команды).

Если последняя выполненная команда представляет собой длинный дисплей и вы хотите отключить его, используйте клавиши CTRL+C в CDB или KD. В WinDbg используйте отладку | Разорвите или нажмите клавиши CTRL+BREAK.

При отладке в режиме ядра можно отменить команды с клавиатуры целевого компьютера, нажав клавиши CTRL+C.

Вы можете использовать команду .cls (очистить экран), чтобы очистить весь текст из окна команд отладчика. Эта команда очищает весь журнал команд. В WinDbg можно очистить журнал команд с помощью команды Изменить | Команду Очистить командный вывод или выбрав Очистить выходные данные команды в контекстном меню окна Командная команда отладчика.

Синтаксис выражений

Многие команды и команды расширения принимают выражения в качестве аргументов. Отладчик вычисляет эти выражения перед выполнением команды . Дополнительные сведения о выражениях см. в разделе Вычисление выражений.

Aliases

Псевдонимы — это текстовые макросы, которые можно использовать, чтобы избежать повторного ввода сложных фраз. Существует два вида псевдонимов. Дополнительные сведения о псевдонимах см. в разделе Использование псевдонимов.

Команды Self-Repeating

Для повторения действия или условного выполнения других команд можно использовать следующие команды:

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

Управление прокруткой

Вы можете использовать полосу прокрутки для просмотра предыдущих команд и их выходных данных.

При использовании CDB или KD любая запись клавиатуры автоматически прокручивается вниз в окне Команд отладчика.

В WinDbg экран автоматически прокручивается вниз, когда команда выдает выходные данные или нажимаете клавишу ВВОД. Если вы хотите отключить эту автоматическую прокрутку, выберите параметры в меню Вид и снимите флажок Автоматически прокручивать проверка.

Функции текста WinDbg

В WinDbg можно использовать несколько дополнительных функций для изменения способа отображения текста в окне Команды отладчика. Некоторые из этих функций доступны в окне WinDbg, некоторые из них — в контекстном меню в окне Команда отладчика, а некоторые — с помощью соответствующего значка меню.

  • Команда Word перенос в контекстном меню включает и отключает состояние переноса по словам. Эта команда влияет на все окно, а не только на команды, которые используются после изменения этого состояния. Поскольку многие команды и расширения создают форматированные дисплеи, перенос по словам обычно не рекомендуется.

  • Правка | Команда меню "Добавить в вывод команд" добавляет комментарий в окно Команда отладчика. Команда Добавить в выходные данные команды в контекстном меню имеет тот же эффект.

  • Вы можете настроить цвета, используемые для текста и фона окна команд отладчика. Для разных типов текста можно указать разные цвета. Например, можно отобразить выходные данные автоматических регистров одним цветом, сообщения об ошибках — другим цветом, а сообщения DbgPrint — третьим цветом.

  • Вы можете использовать все функции, общие для информационных окон отладки WinDbg, такие как настройка шрифтов и использование специальных команд редактирования.

Remote Debugging

При выполнении удаленной отладки с помощью отладчика клиент отладки может получить доступ к ограниченному количеству команд. Чтобы изменить количество команд, к которым клиент может получить доступ, используйте параметр командной строки-clines или переменную среды _NT_DEBUG_HISTORY_SIZE.