Использование KDbgCtrl

Средство KDbgCtrl (элемент управления отладкой ядра, kdbgctrl.exe) можно использовать для управления подключением отладки ядра с целевого компьютера.

Чтобы использовать это средство, целевой компьютер должен работать под управлением Windows Server 2003 или более поздней версии Windows.

KDbgCtrl может управлять пятью различными параметрами: полная отладка ядра, автоматическая отладка ядра, обработка ошибок User-Mode, блокировка отладки ядра и размер буфера DbgPrint.

Чтобы использовать KDbgCtrl, необходимо уже включить отладку ядра в параметрах загрузки целевого компьютера перед последней загрузкой. KDbgCtrl нельзя использовать для включения отладки ядра, если это не было сделано. Дополнительные сведения об этих параметрах загрузки см. в разделе Параметры загрузки для включения отладки .

Полная отладка ядра

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

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

Полная отладка ядра включена по умолчанию. Чтобы проверка текущее значение параметра, используйте kdbgctrl -c. Чтобы отключить этот параметр, используйте kdbgctrl -d. Чтобы включить этот параметр, используйте kdbgctrl -e.

Если вы хотите проверка текущий параметр и использовать его для управления выполнением в пакетном файле, можно использовать команду kdbgctrl -cx. Дополнительные сведения об этой команде см. в разделе Параметры Command-Line KDbgCtrl.

Автоматическая отладка ядра

Если включена полная отладка ядра, текущий параметр автоматической отладки ядра не имеет значения — все обмен данными разрешены.

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

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

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

Автоматическая отладка ядра отключена по умолчанию (хотя это не имеет значения, если не отключена полная отладка ядра). Чтобы проверка текущее значение параметра, используйте kdbgctrl -ca. Чтобы отключить этот параметр, используйте kdbgctrl -da. Чтобы включить этот параметр, используйте kdbgctrl -ea.

Обработка ошибок в пользовательском режиме

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

В частности, все прерывания int 3 , такие как точки останова, вставляемые в код отладчиком или вызовы DbgBreakPoint , вызывают прерывание отладчика ядра. Однако стандартные исключения, такие как нарушения доступа и деление на ноль, обычно не отправляются в отладчик ядра.

Если отладчик пользовательского режима уже подключен к процессу, этот отладчик будет записывать все ошибки пользовательского режима, и отладчик ядра не будет изменен. Ранжирование по приоритету для различных обработчиков ошибок в пользовательском режиме см. в разделе Включение отладки postmortem.

Для работы User-Mode обработки ошибок необходимо также включить полную отладку ядра или автоматическую отладку ядра.

User-Mode обработка ошибок включена по умолчанию. Чтобы проверка текущее значение параметра, используйте kdbgctrl -cu. Чтобы отключить этот параметр, используйте kdbgctrl -du. Чтобы включить этот параметр, используйте kdbgctrl -eu.

Блокировка отладки ядра

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

Важно!

Перед использованием BCDEdit для изменения сведений о загрузке может потребоваться временно приостановить функции безопасности Windows, такие как BitLocker и безопасная загрузка на тестовом компьютере. Повторно включите эти функции безопасности после завершения тестирования и соответствующим образом управляйте тестовой компьютером, когда функции безопасности отключены.

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

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:32 /start DISABLE /noumex

При перезагрузке целевого компьютера он будет подготовлен к отладке ядра, но отладка ядра и обработка ошибок User-Mode будут отключены. На этом этапе главный компьютер не сможет подключиться к целевому компьютеру, проверки ошибок не будут перехватываться отладчиком ядра, а исключения пользовательского режима не вызовут прерывания работы отладчика ядра.

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

kdbgctrl -db
kdbgctrl -e

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

kdbgctrl -d
kdbgctrl -eb

Для проверка блокировки отладки ядра можно использовать kdbgctrl -cb.

Размер буфера DbgPrint

В буфере DbgPrint хранятся сообщения, отправленные целевым компьютером в отладчик ядра.

Если включена полная отладка ядра, эти сообщения будут автоматически отображаться в отладчике ядра. Но если этот параметр отключен, эти сообщения будут храниться в буфере. Позже вы сможете включить отладку ядра, подключиться к отладчику ядра и использовать расширение !dbgprint для просмотра содержимого этого буфера. Дополнительные сведения об этом буфере см. в разделе Буфер DbgPrint.

Размер буфера DbgPrint по умолчанию составляет 4 КБ в бесплатной сборке Windows. Чтобы определить текущий размер буфера, используйте kdbgctrl -cdb. Чтобы изменить размер буфера, используйте kdbgctrl -sdbSize, где Size указывает новый размер буфера. Дополнительные сведения о синтаксисе см. в разделе Параметры Command-Line KDbgCtrl.

Примеры

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

kdbgctrl -c -ca -cu -cb -cdb 

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

kdbgctrl -e -da -eu -db -sdb 0x1000 

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

kdbgctrl -d -ea -eu 

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

kdbgctrl -d -da 

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

kdbgctrl -sdb 0x100000