Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При отладке целевого приложения в пользовательском режиме или целевом компьютере в режиме ядра целевой объект может быть запущен или остановлен.
Когда отладчик подключается к целевому объекту в режиме ядра, отладчик покидает целевой объект, если вы не используете параметр командной строки-b, целевая система перестала отвечать (то есть сбой), или целевая система по-прежнему остановлена из-за предыдущего действия отладки ядра.
Когда отладчик запускает или подключается к целевому объекту пользовательского режима, отладчик немедленно останавливает целевой объект, если вы не используете параметр командной строки -g . Дополнительные сведения см. в разделе "Начальная точка останова".
Когда целевой объект запущен
При запуске целевого объекта большинство действий отладчика недоступны.
Если вы хотите остановить запущенный целевой объект, вы можете выполнить команду Break . Эта команда вызывает отладчик внедриться в целевой процесс. То есть отладчик останавливает выполнение целевой программы, и весь контроль передается отладчику. Приложение может не сломаться сразу. Например, если все потоки в настоящее время выполняют системный код или находятся в операции ожидания, приложение прерывается только после возврата элемента управления в код приложения.
Если целевой процесс обнаруживает исключение, если происходят определенные события, если достигнута точка останова, или если приложение закрывается обычным образом, целевой процесс останавливается для отладки. Это действие останавливает целевой объект и предоставляет отладчику все управление. Сообщение отображается в окне команды отладчика и описывает ошибку, событие или точку останова.
Когда целевой объект остановлен
Чтобы запустить или контролировать выполнение целевого объекта, можно выполнить следующее:
Чтобы начать работу приложения, выполните команду Go .
Чтобы выполнить пошаговое выполнение одной инструкции приложения в один раз, используйте команды step Into или Step Over . При вызове функции Шагнуть внутрь входит в функцию и продолжает пошаговое выполнение каждой инструкции. Step Over обрабатывает вызов функции как один шаг. Когда отладчик находится в режиме сборки, пошаговое выполнение выполняется по одной инструкции компьютера за раз. Когда отладчик находится в режиме источника, пошаговое выполнение выполняется по одной исходной строке за раз.
Чтобы завершить текущую функцию и остановиться при возвращении, используйте команды Step Out или Trace and Watch . Команда Step Out продолжается до окончания текущей функции. Трассировка и контроль продолжается до завершения текущей функции и также отображает сводную информацию о вызовах этой функции. Тем не менее, необходимо выполнить команду Trace и Watch при первой инструкции функции, о которой идет речь.
Если возникает исключение, можно использовать команды Go с обработанным исключением и Go с необработанным исключением, чтобы возобновить выполнение и контролировать состояние исключения. (Дополнительные сведения об исключениях см. в разделе "Управление исключениями и событиями".)
(только WinDbg) Если выбрать строку в окне дизассембли или окне исходного кода, а затем использовать команду "Выполнить к курсору", программа выполняется до выбранной строки.
(только режим пользователя) Чтобы закрыть целевое приложение и перезапустить его с самого начала, используйте команду "Перезапустить ". Эту команду можно использовать только с процессом, созданным отладчиком. После перезапуска процесса он сразу же переходит в отладчик.
(только WinDbg) Чтобы закрыть целевое приложение и очистить отладчик, используйте команду Stop Debugging . Эта команда позволяет начать отладку другого целевого объекта.
Формы команд
Большинство команд для запуска или управления выполнением целевого объекта существуют как текстовые команды, команды меню, кнопки панели инструментов и сочетания клавиш. В качестве основных текстовых команд эти команды можно использовать в CDB, KD или WinDbg. (Текстовая форма команд часто поддерживает дополнительные параметры, например изменение расположения счетчика программы или выполнение фиксированного количества инструкций.) В WinDbg можно использовать команды меню, кнопки панели инструментов и сочетания клавиш.
Команды можно использовать в следующих формах.
командование | Команда WinDbg | Сочетания клавиш WinDbg | Эффект |
---|---|---|---|
Отладка | Запуск до курсора |
F7 CTRL + F10 |
(только WinDbg) Выполняется до тех пор, пока она не достигнет строки, которую помечает курсор. |
|
Отладка | Остановка отладки |
SHIFT + F5 |
Останавливает все отладки и закрывает целевой объект. |
|
(только CDB/KD) CTRL+C |
Отладка | Остановка |
CTRL+BREAK |
Выполнение останавливается, а отладчик вступает в отладку программы. |
Отладка | Перезапуск |
CTRL+SHIFT+F5 |
(Только в пользовательском режиме) Перезапуск целевого приложения. |
|
Отладка | Запуск |
F5 |
Целевой объект выполняется свободно. |
|
Возобновляет выполнение после условной точки останова. |
|||
Отладка | Исключение обрабатывается в Go |
То же, что и g (Go), за исключением того, что текущее исключение считается обработанным. |
||
Отладка | Переход к необработанному исключению |
То же, что и g (Go), за исключением того, что текущее исключение рассматривается как необработанное. |
||
Отладка | Шаг выхода |
SHIFT + F11 |
Целевой объект выполняется до завершения текущей функции. |
|
Отладка | Переступить |
F10 |
Целевой объект выполняет одну инструкцию. Если эта инструкция является вызовом функции, эта функция выполняется как один шаг. |
|
Целевой объект выполняется до тех пор, пока он не достигнет указанного адреса. Отображаются все шаги этой функции (но шаги в вызываемых функциях не являются). |
|||
Целевой объект выполняется до следующей инструкции вызова . Если текущая инструкция является инструкцией вызова , этот вызов выполняется полностью, и выполнение продолжается до следующего вызова. |
|||
Целевой объект выполняется до тех пор, пока он не достигнет инструкции вызова или возвращаемой инструкции. |
|||
Целевой объект выполняется до тех пор, пока он не достигнет какой-либо инструкции ветвления, включая условные или безусловные ветви, вызовы, возвраты и системные вызовы. |
|||
Целевой объект выполняется до тех пор, пока он не достигнет инструкции возврата . |
|||
Отладка | Шаг в |
F11 F8 |
Целевой объект выполняет одну инструкцию. Если эта инструкция является вызовом функции, отладчик проникает в этот вызов. |
|
Целевой объект выполняется до тех пор, пока он не достигнет указанного адреса. Отображаются все шаги этой функции и вызываемые функции. |
|||
(Все режимы, кроме режима ядра, только в системах на основе x86) Целевой объект выполняется до достижения следующей инструкции ветви. |
|||
Целевой объект выполняется до следующей инструкции вызова . Если текущая инструкция является вызовом, происходит её трассировка до достижения нового вызова. |
|||
Целевой объект выполняется до тех пор, пока он не достигнет инструкции вызова или возвращаемой инструкции. Если текущая инструкция является инструкцией вызова или инструкцией возврата , она будет отслеживаться до достижения нового вызова или возврата . |
|||
Целевой объект выполняется до тех пор, пока он не достигнет какой-либо инструкции ветвления, включая условные или безусловные ветви, вызовы, возвраты и системные вызовы. Если текущая инструкция является ветвляющей инструкцией, трассировка продолжается до достижения новой ветвляющей инструкции. |
|||
Целевой объект выполняется до тех пор, пока он не достигнет инструкции возврата . Если текущая инструкция является инструкцией возврата, то инструкция трассируется до достижения новой инструкции возврата. |
|||
Целевой объект выполняется до завершения всей указанной функции. Затем отображаются статистические данные. |
Дополнительные сведения о перезапуске целевого компьютера см. в разделе "Сбой и перезагрузка целевого компьютера".
Параметры командной строки
Если вы не хотите, чтобы приложение немедленно остановилось при запуске или загрузке, используйте CDB или WinDbg вместе с параметром командной строки -g . Дополнительные сведения об этой ситуации см. в статье "Начальная точка останова".
CDB и WinDbg также поддерживают параметр командной строки-G. Этот параметр приводит к концу сеанса отладки, если приложение завершается должным образом.
Следующая команда пытается запустить приложение с начала до конца, и запрос отладчика появляется только в том случае, если возникает ошибка.
cdb -g -G ApplicationName
Чтобы задать время ожидания прерывания, можно использовать параметр командной строки-pt. Существуют определенные проблемы, которые могут сделать целевой объект не в состоянии взаимодействовать с отладчиком. Если выдана команда останова, и отладчик не может войти в процесс в течение указанного времени, отладчик отображает сообщение "Превышено время ожидания останова".
На этом этапе отладчик останавливает попытку взломать целевой объект. Вместо этого отладчик приостанавливает целевой объект и позволяет проверять (но не контролировать) целевое приложение.
Время ожидания по умолчанию — 30 секунд.