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


Переключение режима

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

Примечание При описании этого сценария целевое приложение означает отлаживаемое приложение в пользовательском режиме, целевой компьютер — компьютер, содержащий целевое приложение и процесс CDB или NTSD, а главный компьютер — компьютер, содержащий отладчик ядра.

Будут обнаружены следующие четыре режима:

Отладка в пользовательском режиме
Конечный компьютер и целевое приложение заморожены. Запрос отладки в пользовательском режиме отображается в окне Команда отладчика ядра. В WinDbg запрос на нижней панели окна WinDbg отображает входные данные>. В этой командной строке можно ввести команды, как если бы они были введены во время отладки в пользовательском режиме, чтобы проанализировать состояние целевого приложения или заставить его запустить или пошагово выполнить. Файлы символов, библиотеки DLL расширений и другие файлы, к которым обращается отладчик, будут файлами на целевом компьютере, а не на хост-компьютере.

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

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

Отладка в режиме ядра
Конечный компьютер и целевое приложение заморожены. Запрос отладки в режиме ядра kd> отображается в окне Команда отладчика ядра. Этот режим является типичным состоянием отладки в режиме ядра.

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

  • Чтобы переключиться с отладки в пользовательском режиме на выполнение целевого приложения, используйте команду g (Go) в командной строке Input> .

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

  • Чтобы переключиться из пользовательского режима отладки в спящий режим, используйте команду .sleep (Pause Debugger). Время выполнения этой команды истекло. По истечении времени система возвращается к отладке в пользовательском режиме.

  • Чтобы переключиться с отладки в пользовательском режиме на отладку в режиме ядра, используйте команду .breakin (Break to the Kernel Debugger). Обратите внимание, что breakin может завершиться ошибкой отказа в доступе, если вызывающий процесс не имеет прав администратора. В этом случае переключитесь на KD, выполнив короткую команду .sleep и нажав клавиши CTRL+C.

  • Вы можете переключиться с выполнения целевого приложения на отладку в пользовательском режиме только в определенных средах. Если целевой компьютер работает под управлением Microsoft Windows XP или более поздней версии операционной системы Windows, можно использовать команду расширения !bpid . Если вы используете CDB (не NTSD), можно активировать окно CDB на целевом компьютере и нажать клавиши CTRL+C.

  • Если целевое приложение достигает точки останова, обнаруживает исключение, обнаруживает другое управляемое событие или завершается, система переключается с выполнения целевого приложения на отладку в пользовательском режиме. Такие события следует планировать заранее, особенно при использовании NTSD. Дополнительные сведения об этих событиях см. в разделах Использование точек останова и Управление исключениями и событиями.

  • Чтобы переключиться с выполнения целевого приложения на отладку в режиме ядра, нажмите клавиши CTRL+C в окне KD, нажмите клавиши CTRL+BREAK или выберите команду Break в меню Отладка в окне WinDbg либо нажмите sysRQ или ALT+SYSRQ на клавиатуре целевого компьютера. (Если отладчик ядра — KD и вы нажимаете клавиши CTRL+C в то же время, когда отладчик ядра взаимодействует с отладчиком пользовательского режима, отладчик пользовательского режима может записать нажатие клавиш CTRL+C.)

  • Если в отладчике возникает ошибка ядра или если вы используете средство Breakin.exe, система переключается с выполнения целевого приложения на отладку в режиме ядра.

  • Чтобы переключиться из спящего режима в режим отладки в пользовательском режиме, дождитесь истечения времени ожидания, запустите новый процесс CDB на целевом компьютере с помощью параметра командной строки -wake или используйте команду .wake (Wake Debugger) в другой копии CDB или NTSD на целевом компьютере.

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