Настройка отладки режима ядра USB KDNET EEM (KDNET-EEM-USB)
Средства отладки для Windows поддерживают отладку ядра по USB-кабелю с помощью режима эмуляции Ethernet (EEM) В этом разделе описывается настройка USB EEM с помощью служебной программы kdnet.exe.
Компьютер, на котором выполняется отладчик, называется главным компьютером, а отлаживаемый компьютер называется целевым компьютером.
Требования к устройству USB EEM в режиме ядра
Требуется следующее:
На целевом компьютере контроллер Synopsys USB 3.0, подключенный к порту ТИПА USB C.
На хост-компьютере требуется внешний порт USB 3.0.
Обновление Windows 10 за октябрь 2020 г. (20H2) или более поздней версии
Транспорт KDNET-EEM-USB можно настроить следующим образом:
- Устройство отладки PCI. Эти устройства отладки задаются с помощью dbgsettings::busparams=seg.bus.dev.fun.
- Устройства отладки таблиц ACPI-DBG2. Эти устройства отладки задаются с помощью dbgsettings::busparams=1|2|3, что 1|2|3 указывает на конкретную запись массива ACPI DBG2-Table, содержащую конфигурацию устройства отладки.
Требования к кабелю
- Для подключения порта узла типа A к порту C целевого типа C требуется стандартный usb 3.0 Type C.
Двоичные файлы транспорта
Двоичные файлы kd_0C_8086.dll для x64 и kd_8003_5143.dll для ARM используются для поддержки транспорта отладчика KDNET-EEM-USB.
Убедитесь, что поддерживаемый USB-контроллер доступен на целевом объекте.
На целевом компьютере запустите диспетчер устройств.
Убедитесь, что контроллер двух ролей Synopsys USB 3.0 указан.
Определение порта отладки при наличии нескольких портов
После определения порта, поддерживающего отладку, необходимо найти физический USB-соединитель, связанный с этим портом.
Например, на Surface Pro X используйте нижний из двух портов USB C для отладки KDNET EEM.
Используйте kdnet.exe для подтверждения поддержки устройств и просмотра значения busparams
Устройства Intel / AMD 64
Параметры отладки BCDEDIT хранятся в хранилище данных конфигурации загрузки (BCD). Дополнительные сведения см. в разделе BCDEdit /debug.
Устройства ARM
Устройства ARM используют таблицу ACPI DBG2 для настройки отладчика, где шина указывает на запись таблицы DBG2. Чтобы указать используемый порт отладки, используется busparm. Обычно используется только первый busparam, и он равен 0 или 1 в зависимости от устройства. Как правило, устройства не используют busparams=0, так как запись таблицы 0 DBG2 обычно зарезервирована для последовательного устройства COM. Дополнительные сведения о таблице DBG2 ACPI см. в таблице портов отладки Майкрософт 2 (DBG2).
Использование kdnet.exe для настройки USB-интерфейса EEM KDNET
Используйте служебную программу kdnet.exe для отображения сведений о параметрах для контроллеров, поддерживающих отладку транспорта KDNET-EEM-USB.
Убедитесь, что средства отладки Windows установлены на узле и целевой системе. Сведения о скачивании и установке средств отладчика см. в разделе "Средства отладки" для Windows.
Найдите программу kdnet.exe. По умолчанию файлы находятся здесь.
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
На целевом компьютере откройте окно командной строки от имени администратора. Введите эту команду, чтобы убедиться, что целевой компьютер имеет поддерживаемый сетевой адаптер и просмотреть значение busparams.
C:\KDNET>kdnet.exe Network debugging is not supported on any of the NICs in this machine. KDNET supports NICs from Intel, Broadcom, Realtek, Atheros, Emulex, Mellanox and Cisco. Network debugging is supported on the following USB controllers: busparams=1, Device-mode USB controller with Vendor ID: 5143 (Default) busparams=2, Device-mode USB controller with Vendor ID: 5143 busparams=3, Device-mode USB controller with Vendor ID: 5143 busparams=4, Device-mode USB controller with Vendor ID: 5143 This Microsoft hypervisor supports using KDNET in guest VMs.
По мере того как выходные данные из kdnet.exe указывают на доступность поддерживаемого USB-контроллера со значением busparams 1, мы можем продолжить.
Настройка целевого компьютера
Используйте программу kdnet.exe для настройки параметров отладчика на целевом компьютере, выполнив следующие действия.
Внимание
Прежде чем использовать bcdedit для изменения сведений о загрузке, может потребоваться временно приостановить функции безопасности Windows, такие как BitLocker и безопасная загрузка на тестовом компьютере. После завершения работы можно повторно включить Bit Locker и безопасную загрузку с помощью BCDEdit для обновления сведений о загрузке. При отключении функций безопасности необходимо управлять тестируемым компьютером.
Используйте приведенную ниже команду, чтобы задать значение busparams, IP-адрес и порт хост-системы и создать уникальный ключ подключения. IP-адрес 169.254.255.255 используется для всех подключений USB EMM.
Выберите уникальный адрес порта для каждой пары целевых или узлов, с которыми вы работаете, в рекомендуемом диапазоне от 50000 до 50039. В примере показано значение 50005.
C:\>kdnet.exe 169.254.255.255 50005
Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
Скопируйте возвращенный ключ в блокнот .txt-файл. В приведенном примере созданный ключ имеет значение:
2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
Используйте команду BCDEdit для проверки правильности параметров. Дополнительные сведения см. в разделе BCDEdit /dbgsettings
C:\>bcdedit /dbgsettings
busparams 1
key 2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
debugtype NET
hostip 169.254.255.255
port 50005
dhcp No
The operation completed successfully.
Отключение брандмауэра на узле
На узле отключите брандмауэр для отладчика.
Подключение WinDbg к целевому объекту для отладки ядра
На хост-компьютере откройте WinDbg. В меню "Файл" выберите "Отладка ядра". В диалоговом окне отладки ядра откройте вкладку "Net ". Вставьте номер порта и ключ, сохраненный в блокноте .txt файла ранее. Нажмите ОК.
Вы также можете запустить сеанс WinDbg, открыв окно командной строки и введя следующую команду, где выбран порт выше, и является ключом, возвращенным kdnet.exe выше. Вставьте ключ, сохраненный в блокноте .txt файла ранее.
windbg -k -d net:port=<YourDebugPort>,key=<YourKey>
Перезагрузка целевого компьютера
После подключения отладчика перезагрузите целевой компьютер. Одним из способов перезагрузки компьютера является использование shutdown -r -t 0
команды из командной строки администратора.
После перезапуска целевого компьютера отладчик должен подключаться автоматически.
Устранение неполадок
Устранение неполадок с целевым объектом
Убедитесь, что сетевой адаптер Windows KDNET-USB-EMM присутствует в сетевых адаптерах в Windows диспетчер устройств.
Свойства устройства показывают, когда контроллер зарезервирован для использования отладчиком ядра Windows.
Устранение неполадок узла
Убедитесь, что сетевой адаптер Windows KDNET-USB-EMM присутствует в сетевых адаптерах в Windows диспетчер устройств.
На узле отображается подключение KDNET-EEM с помощью порта USB Type A.
Intel PCI — сообщения о повторных попытках подключения в окнах консоли отладчика и не могут войти в целевой объект — SkipPciProbeDebugDevice
Если вы столкнулись со следующим сообщением в консоли отладчика KDNET, не удается инициировать разрыв в целевой объект или возникнуть проблемы с определенными командами (например, kdfiles), это может быть связано с получением пакета проверки связи из-за KDNET".
... Retry sending the same data packet for 128 times.
The transport connection between host kernel debugger and target Windows seems lost.
please try resync with target, recycle the host debugger, or reboot the target Windows.
Эта проблема может произойти, так как драйвер pci.sys неправильно проверит устройство отладки. Чтобы устранить ошибки, создайте следующую запись реестра на целевом устройстве в командной строке администратора.
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\SERVICES\kdnet /v SkipPciProbeDebugDevice /t REG_DWORD /d 1 /f
Затем перезапустите целевой компьютер.
shutdown /r /t 0
После перезагрузки устройства ошибки должны исчезнуть, и команды должны работать должным образом.
См. также
Автоматическая настройка отладки сетевого ядра KDNET
Настройка отладки сетевого ядра KDNET вручную