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


Отладка режима динамического ядра с помощью WinDbg (классическая версия)

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

Меню WinDbg

Если WinDbg находится в неактивном режиме, можно начать сеанс отладки ядра, выбрав отладку ядра в меню "Файл " или нажав клавиши CTRL+K. При появлении диалогового окна отладки ядра щелкните соответствующую вкладку: NET, COM, USB или Local. Каждая вкладка задает другой метод подключения.

Командная строка

В окне командной строки можно инициировать сеанс отладки в режиме ядра при запуске WinDbg. Введите одну из следующих команд:

windbg [-y SymbolPath] -k net:port=PortNumber,key=Key[,target=TargetIPAddress|TargetMachineName]

windbg [-y SymbolPath] -k usb:targetname=USBString

windbg [-y SymbolPath] -k com:port=ComPort,baud=BaudRate

windbg [-y SymbolPath] -k com:ipport=SerialTcpIpPort,port=SerialIPAddress

windbg [-y SymbolPath] -k com:pipe,port=\\VMHost\pipe\PipeName[,resets=0][,reconnect]

windbg [-y SymbolPath] -k com:модем

windbg [-y SymbolPath] -kl

windbg [-y SymbolPath] -k

Дополнительные сведения см. в разделе "Параметры командной строки WinDbg".

Переменные среды

Для отладки по последовательному порту (COM-порту) можно использовать переменные среды для указания параметров подключения.

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

set _NT_DEBUG_PORT = ComPort

set _NT_DEBUG_BAUD_RATE = BaudRate

Дополнительные сведения см. в разделе "Переменные среды в режиме ядра".

Параметры

SymbolPath
Список каталогов, в которых находятся файлы символов. Каталоги в списке разделены точкой с запятой. Дополнительные сведения см. в разделе "Путь к символам".

Номер порта
Номер порта, используемый для отладки сети. Вы можете выбрать любое число от 49152 до 65535. Дополнительные сведения см. в разделе "Настройка сетевого подключения вручную".

Ключ
Ключ шифрования, используемый для отладки сети. Рекомендуется использовать автоматически созданный ключ, который предоставляется bcdedit при настройке целевого компьютера. Дополнительные сведения см. в разделе "Настройка сетевого подключения вручную".

TargetIPAddress
Адрес IPv4 целевого компьютера.

При указании IP-адреса target= это приводит к тому, что отладчик инициирует подключение к указанному целевому компьютеру, отправляя специальный пакет в целевой объект, что приведет к попытке подключиться к этому отладчику. Отладчик отправляет пакеты в целевой объект примерно каждые половину секунды, пытаясь подключиться. Если подключение выполнено успешно, целевой объект удаляет любое существующее соединение и взаимодействует только с этим экземпляром отладчика. Это позволяет управлять сеансом отладки из существующего подключения отладки.

Если целевой объект настроен с IP-адресом узла, а отладчик запускается на компьютере с настроенным IP-адресом узла, не нужно указывать параметр IP-адреса target= . Если целевой объект настроен с IP-адресом узла, он будет отправлять пакеты OFFER на узел каждые три секунды. Пакеты OFFER позволяют отладчику подключаться к узлу, если не указан IP-адрес целевого объекта.

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

TargetMachineName
Имя компьютера целевого компьютера. Чтобы использовать имя компьютера, система DNS в сети должна иметь имя компьютера, связанное с IP-адресом целевого компьютера.

USBString
USB-строка подключения. Это должно соответствовать строке, указанной с параметром загрузки /targetname. Дополнительные сведения см. в статье Настройка отладки в режиме ядра USB 3.0 xHCI-DBC (KDUSB).

Вести
Имя COM-порта. Это может быть формат com2 или в формате "\\.\com2", но не должно быть просто числом. Дополнительные сведения см. в разделе "Настройка последовательного подключения вручную".

BaudRate
Скорость в бодах. Это может быть 9600, 19200, 38400, 57600 или 115200.

SerialTcpIpPort
Целевой TCP-ip-порт эмулированного последовательного COM-порта.

SerialIPAddress
Целевой TCP-адрес эмулированного последовательного COM-порта.

VMHost
При отладке виртуальной машины VMHost указывает имя физического компьютера, на котором выполняется виртуальная машина. Если виртуальная машина работает на том же компьютере, что и сам отладчик ядра, используйте один период (.) для VMHost. Дополнительные сведения см. в разделе "Настройка подключения к виртуальной машине".

Имя канала
Имя канала, созданного виртуальной машиной для подключения отладки.

resets=0
Указывает, что неограниченное количество пакетов сброса можно отправлять в целевой объект при синхронизации узла и целевого объекта. Этот параметр необходим только при отладке определенных видов виртуальных машин.

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

-kl
Позволяет отладчику выполнять отладку локального режима ядра. Дополнительные сведения см. в разделе "Отладка в локальном режиме ядра".

Параметры предыдущей версии

Внимание

Транспорт 1394 доступен для использования в Windows 10 версии 1607 и более ранних версий. Она недоступна в более поздних версиях Windows. Вы должны перенести проекты в другие транспорты, такие как KDNET с помощью Ethernet. Дополнительные сведения об этом транспорте см. в разделе "Настройка автоматической отладки сетевого ядра KDNET".

1394Channel
Номер канала 1394. Допустимые номера каналов — любое целое число от 0 до 62 включительно. 1394Channel должен соответствовать номеру, используемому целевым компьютером, но не зависит от физического порта 1394, выбранного на адаптере.

1394Protocol
Протокол подключения, используемый для подключения ядра 1394. Это может быть опущено почти всегда, так как отладчик автоматически выберет правильный протокол. Если вы хотите установить это вручную, а целевой компьютер работает под управлением Windows XP, 1394Protocol должен иметь значение channel. Если целевой компьютер работает под управлением Windows Server 2003 или более поздней версии, 1394Protocol должен иметь значение "экземпляр". Если он опущен, отладчик по умолчанию будет соответствовать протоколу, соответствующему текущему целевому компьютеру. Это можно указать только с помощью командной строки или переменных среды, а не через графический интерфейс WinDbg.

Примеры

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

set _NT_SYMBOL_PATH=d:\mysymbols
set _NT_DEBUG_PORT=com1
set _NT_DEBUG_BAUD_RATE=115200
set _NT_DEBUG_LOG_FILE_OPEN=d:\debuggers\logfile1.log
windbg -k

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

windbg -y d:\mysymbols -k com:port=com2,baud=57600

windbg -y d:\mysymbols -k com:port=\\.\com2,baud=115200

windbg -y d:\mysymbols -k net:port=50000,key=AutoGeneratedKey

windbg -y d:\mysymbols -k net:port=50000,key=AutoGeneratedKey,target=TargetIPAddress

См. также

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

Переменные среды в режиме ядра