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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Внимание

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

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

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

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

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

kdbgctrl -db
kdbgctrl -e

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

kdbgctrl -d
kdbgctrl -eb

Можно использовать kdbgctrl -cb, чтобы проверка, заблокирована ли отладка ядра.

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

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

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

Размер буфера DbgPrint по умолчанию составляет 4 КБ в бесплатной сборке Windows. Чтобы определить текущий размер буфера, используйте kdbgctrl -cdb. Чтобы изменить размер буфера, используйте kdbgctrl -sdbSize, где size задает новый размер буфера. Сведения о синтаксисе см. в разделе "Параметры командной строки 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