Поделиться через


Управление целевым объектом

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

Когда отладчик подключается к целевому объекту в режиме ядра, отладчик покидает целевой объект, если вы не используете параметр командной строки -b, целевая система перестала отвечать (то есть сбой), или целевая система по-прежнему остановлена из-за предыдущего действия отладки ядра.

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

Когда целевой объект запущен

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

Если вы хотите остановить запущенный целевой объект, вы можете выполнить команду Break . Эта команда приводит к разрыву отладчика в целевой объект. То есть отладчик останавливает целевой объект, а все элементы управления получают отладчику. Приложение может не прерываться немедленно. Например, если все потоки в настоящее время выполняют системный код или находятся в операции ожидания, приложение прерывается только после возврата элемента управления в код приложения.

Если запущенный целевой объект обнаруживает исключение, если происходят определенные события, если точка останова достигнута, или если приложение закрывается обычно, целевой объект прерывается в отладчик. Это действие останавливает целевой объект и предоставляет отладчику все управление. Сообщение отображается в окне команды отладчика и описывает ошибку, событие или точку останова.

Когда целевой объект остановлен

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

  • Чтобы начать работу приложения, выполните команду Go .

  • Чтобы выполнить пошаговое выполнение одной инструкции приложения в один раз, используйте команды step Into или Step Over . При возникновении вызова функции шаг вступает в функцию и продолжает выполнять шаги по каждой инструкции. Step Over обрабатывает вызов функции как один шаг. Когда отладчик находится в режиме сборки, пошаговое выполнение выполняется по одной инструкции компьютера за раз. Когда отладчик находится в режиме источника, пошаговое выполнение выполняется по одной исходной строке за раз.

  • Чтобы завершить текущую функцию и остановиться при возвращении, используйте команды Step Out или Trace and Watch . Команда Step Out продолжается до окончания текущей функции. Трассировка и контроль продолжается до завершения текущей функции, а также отображает сводку вызовов функции. Тем не менее, необходимо выполнить команду Trace и Watch при первой инструкции функции, о которой идет речь.

  • Если возникает исключение, можно использовать команды Go с обработкой исключений и Go с исключением Not Handled, чтобы возобновить выполнение и контролировать состояние исключения. (Дополнительные сведения об исключениях см. в разделе Управление исключениями и событиями.)

  • (только WinDbg) Если выбрать строку в окне дизассембли или окне источника, а затем использовать команду "Выполнить к курсору", программа запускается до тех пор, пока она не столкнется с выбранной строкой.

  • (только режим пользователя) Чтобы закрыть целевое приложение и перезапустить его с самого начала, используйте команду "Перезапустить ". Эту команду можно использовать только с процессом, созданным отладчиком. После перезапуска процесса он сразу же переходит в отладчик.

  • (только WinDbg) Чтобы закрыть целевое приложение и очистить отладчик, используйте команду Stop Debugging . Эта команда позволяет начать отладку другого целевого объекта.

Командные формы

Большинство команд для запуска или управления выполнением целевого объекта существуют как текстовые команды, команды меню, кнопки панели инструментов и сочетания клавиш. В качестве основных текстовых команд эти команды можно использовать в CDB, KD или WinDbg. (Текстовая форма команд часто поддерживает дополнительные параметры, например изменение расположения счетчика программы или выполнение фиксированного количества инструкций.) В WinDbg можно использовать команды меню, кнопки панели инструментов и сочетания клавиш.

Команды можно использовать в следующих формах.

Команда Команда WinDbg Сочетания клавиш WinDbg Действие

Отладка | Запуск к курсору

F7

CTRL + F10

(только WinDbg) Выполняется до тех пор, пока она не достигнет строки, которую помечает курсор.

Отладка | Остановка отладки

SHIFT + F5

Останавливает все отладки и закрывает целевой объект.

(только CDB/KD) CTRL+C

Отладка | Ломать

CTRL+BREAK

Выполнение останавливается, а отладчик разбивается на целевой объект.

.restart (перезапуск целевого приложения)

Отладка | Перезапуск

CTRL+SHIFT+F5

(Только в пользовательском режиме) Перезапуск целевого приложения.

g (Go)

Отладка | Идти

F5

Целевой объект выполняется свободно.

gc (переход с условной точки останова)

Возобновляет выполнение после условной точки останова.

gh (Go с обработкой исключений)

Отладка | Исключение Go Handled

То же, что и g (Go), за исключением того, что текущее исключение обрабатывается как обработанное.

gn (Go с исключением не обработано)

Отладка | Необработанное исключение

То же, что и g (Go), за исключением того, что текущее исключение рассматривается как необработанное.

gu (Go Up)

Отладка | Шаг выхода

SHIFT + F11

Целевой объект выполняется до завершения текущей функции.

p (шаг)

Отладка | Переступить

F10

Целевой объект выполняет одну инструкцию. Если эта инструкция является вызовом функции, эта функция выполняется как один шаг.

pa (шаг к адресу)

Целевой объект выполняется до тех пор, пока он не достигнет указанного адреса. Отображаются все шаги этой функции (но шаги в вызываемых функциях не являются).

pc (шаг к следующему вызову)

Целевой объект выполняется до следующей инструкции вызова . Если текущая инструкция является инструкцией вызова , этот вызов выполняется полностью, и выполнение продолжается до следующего вызова.

pct (шаг к следующему вызову или возврату)

Целевой объект выполняется до тех пор, пока он не достигнет инструкции вызова или возвращаемой инструкции.

ph (шаг к следующей ветвления инструкции)

Целевой объект выполняется до тех пор, пока он не достигнет какой-либо инструкции ветвления, включая условные или безусловные ветви, вызовы, возвраты и системные вызовы.

pt (шаг к следующему возврату)

Целевой объект выполняется до тех пор, пока он не достигнет инструкции возврата .

t (трассировка)

Отладка | Шаг в

F11

F8

Целевой объект выполняет одну инструкцию. Если эта инструкция является вызовом функции, отладчик выполняет трассировку в этот вызов.

ta (трассировка по адресу)

Целевой объект выполняется до тех пор, пока он не достигнет указанного адреса. Отображаются все шаги этой функции и вызываемые функции.

tb (трассировка до следующей ветви)

(Все режимы, кроме режима ядра, только в системах на основе x86) Целевой объект выполняется до достижения следующей инструкции ветви.

tc (трассировка до следующего вызова)

Целевой объект выполняется до следующей инструкции вызова . Если текущая инструкция является инструкцией по вызову , инструкция трассируется до достижения нового вызова .

tct (трассировка до следующего вызова или возврата)

Целевой объект выполняется до тех пор, пока он не достигнет инструкции вызова или возвращаемой инструкции. Если текущая инструкция является инструкцией вызова или инструкцией возврата , она будет отслеживаться до достижения нового вызова или возврата .

th (трассировка до следующей ветви инструкции)

Целевой объект выполняется до тех пор, пока он не достигнет какой-либо инструкции ветвления, включая условные или безусловные ветви, вызовы, возвраты и системные вызовы. Если текущая инструкция является ветвлением, инструкция трассируется до достижения новой ветвления.

tt (трассировка до следующего возврата)

Целевой объект выполняется до тех пор, пока он не достигнет инструкции возврата . Если текущая инструкция является инструкцией возврата , то инструкция трассируется до достижения нового возвращаемого значения .

wt (данные трассировки и просмотра)

Целевой объект выполняется до завершения всей указанной функции. Затем отображаются статистические данные.

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

Параметры командной строки

Если вы не хотите, чтобы приложение немедленно остановилось при запуске или загрузке, используйте CDB или WinDbg вместе с параметром командной строки -g . Дополнительные сведения об этой ситуации см. в статье "Начальная точка останова".

CDB и WinDbg также поддерживают параметр командной строки -G. Этот параметр приводит к концу сеанса отладки, если приложение завершается должным образом.

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

cdb -g -G ApplicationName 

Чтобы задать время ожидания прерывания, можно использовать параметр командной строки -pt. Существуют определенные проблемы, которые могут сделать целевой объект не в состоянии взаимодействовать с отладчиком. Если команда останова выдана, а отладчик не может врваться в целевой объект после этого времени, отладчик отображает сообщение "Время ожидания останова".

На этом этапе отладчик останавливает попытку взломать целевой объект. Вместо этого отладчик приостанавливает целевой объект и позволяет проверять (но не контролировать) целевое приложение.

Время ожидания по умолчанию — 30 секунд.