Einrichten des USB KDNET EEM Kernelmodus-Debugging (KDNET-EEM-USB)
Debugtools für Windows unterstützen das Kerneldebugging über ein USB-Kabel mithilfe des Ethernet Emulationsmodus (EEM) In diesem Thema wird beschrieben, wie SIE USB EEM mithilfe des Hilfsprogramms kdnet.exe einrichten.
Der Computer, auf dem der Debugger ausgeführt wird, wird als Hostcomputer bezeichnet, und der Computer, der debugged wird, wird als Zielcomputer bezeichnet.
Anforderungen für USB EEM-Geräte im Kernelmodus
Das Folgende ist erforderlich:
Auf dem Zielcomputer ist ein Synopsys USB 3.0-Controller an einen USB-Typ C-Anschluss angeschlossen.
Auf dem Hostcomputer ist ein extern verfügbarer USB 3.0-Anschluss erforderlich.
Windows 10 Oktober 2020 Update (20H2) oder höher
Der KDNET-EEM-USB-Transport kann für Folgendes konfiguriert werden:
- PCI-Debuggerät. Diese Debuggeräte werden mithilfe von dbgsettings::busparams=seg.bus.dev.fun festgelegt.
- ACPI-DBG2 Table debug devices. Diese Debuggeräte werden mithilfe von dbgsettings::busparams=1|2|3 festgelegt, wodurch 1|2|3 auf den ACPI DBG2-Table-Arrayeintrag verweist, der die Konfiguration des Debuggeräts enthält.
Kabelanforderungen
- Zum Anschließen des Hosttyps A an den Zieltyp C-Anschluss ist ein standardmäßiges USB 3.0 Typ C-Kabel erforderlich.
Binärtransportdateien
Binärdateien kd_0C_8086.dll für x64 und kd_8003_5143.dll für ARM werden verwendet, um den KDNET-EEM-USB-Debuggertransport zu unterstützen.
Vergewissern Sie sich, dass ein unterstützter USB-Controller auf dem Ziel verfügbar ist.
Starten Sie auf dem Zielcomputer Geräte-Manager.
Vergewissern Sie sich, dass der Synopsys USB 3.0 Dual-Role Controller aufgeführt ist.
Ermitteln des Debuggingports, wenn mehrere Ports verfügbar sind
Nachdem Sie einen Port identifiziert haben, der das Debuggen unterstützt, besteht der nächste Schritt darin, den physischen USB-Anschluss zu finden, der diesem Port zugeordnet ist.
Verwenden Sie z. B. auf dem Surface Pro X die untere der beiden USB-C-Anschlüsse für das KDNET EEM-Debugging.
Verwenden Sie kdnet.exe, um die Geräteunterstützung zu bestätigen und den busparams-Wert anzuzeigen
Intel / AMD 64-Geräte
Die BCDEDIT-Debugoptionen werden im BCD-Speicher (Boot Configuration Data) gespeichert. Weitere Informationen finden Sie unter BCDEdit /debug.
ARM-Geräte
ARM-Geräte verwenden die ACPI DBG2-Tabelle zum Konfigurieren des Debuggers, wobei die Busparams auf den DBG2-Tabelleneintrag verweist. Um den verwendeten Debugport anzugeben, wird busparm verwendet. In der Regel wird nur der erste Busparam verwendet, und es ist je nach Gerät entweder 0 oder 1. In der Regel verwenden Geräte keinen Busparams=0, da der Tabelleneintrag "0 DBG2" normalerweise für das serielle Gerät COM reserviert ist. Weitere Informationen zur ACPI DBG2-Tabelle finden Sie in der Tabelle "Microsoft Debug Port 2 (DBG2)".
Verwenden von kdnet.exe zum Konfigurieren von KDNET EEM USB
Verwenden Sie das Hilfsprogramm kdnet.exe, um die Parameterinformationen für Controller anzuzeigen, die das Debuggen von KDNET-EEM-USB unterstützen.
Vergewissern Sie sich, dass die Windows-Debuggingtools auf dem Host- und Zielsystem installiert sind. Informationen zum Herunterladen und Installieren der Debugging-Tools finden Sie unter Debugging-Tools für Windows.
Suchen Sie das Hilfsprogramm kdnet.exe. Standardmäßig befinden sich die Dateien hier.
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
Öffnen Sie auf dem Zielcomputer ein Eingabeaufforderungsfenster als Administrator. Geben Sie diesen Befehl ein, um zu überprüfen, ob der Zielcomputer über einen unterstützten Netzwerkadapter verfügt, und um den busparams-Wert anzuzeigen.
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.
Da die Ausgabe von kdnet.exe angibt, dass ein unterstützter USB-Controller mit einem Busparamswert von 1 verfügbar ist, können wir fortfahren.
Einrichten des Zielcomputers
Verwenden Sie das Hilfsprogramm kdnet.exe, um die Debuggereinstellungen auf dem Ziel-PC zu konfigurieren, indem Sie die folgenden Schritte ausführen.
Wichtig
Bevor Sie bcdedit zum Ändern der Startinformationen verwenden, müssen Sie möglicherweise vorübergehend Windows-Sicherheitsfunktionen wie BitLocker und Secure Boot auf dem Test-PC aussetzen. Sie können Bit Locker und den sicheren Start erneut aktivieren, nachdem Sie BCDEdit zum Aktualisieren der Startinformationen verwendet haben. Verwalten Sie den Test-PC entsprechend, wenn die Sicherheitsfeatures deaktiviert sind.
Verwenden Sie den unten gezeigten Befehl, um den Busparams-Wert, die IP-Adresse und den Port des Hostsystems festzulegen und einen eindeutigen Verbindungsschlüssel zu generieren. Die IP-Adresse 169.254.255.255 wird für alle USB EMM-Verbindungen verwendet.
Wählen Sie eine eindeutige Portadresse für jedes Ziel-/Hostpaar aus, mit dem Sie arbeiten, innerhalb des empfohlenen Bereichs von 50000-50039. Im Beispiel wird 50005 angezeigt.
C:\>kdnet.exe 169.254.255.255 50005
Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
Kopieren Sie die zurückgegebene Taste in eine Notepad-.txt Datei. Im gezeigten Beispiel hat der generierte Schlüssel einen Wert von:
2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
Verwenden Sie den BEFEHL BCDEdit, um zu überprüfen, ob die Parameter wie erwartet sind. Weitere Informationen finden Sie unter 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.
Deaktivieren der Firewall auf dem Host
Deaktivieren Sie auf dem Host die Firewall für den Debugger.
Verbinden WinDbg zum Ziel für das Kerneldebugging
Öffnen Sie auf dem Hostcomputer WinDbg. Wählen Sie im Menü Datei die Option Kerneldebugging. Öffnen Sie im Dialogfeld "Kerneldebugging" die Registerkarte "Net ". Fügen Sie Die Portnummer und den Schlüssel ein, an dem Sie zuvor im Editor .txt Datei gespeichert haben. Wählen Sie OK aus.
Sie können eine WinDbg-Sitzung auch starten, indem Sie ein Eingabeaufforderungsfenster öffnen und den folgenden Befehl eingeben. Dabei handelt es sich um den Port, den Sie oben ausgewählt haben, und um den Schlüssel, der oben von kdnet.exe zurückgegeben wurde. Fügen Sie den Schlüssel, in den Sie zuvor im Editor .txt Datei gespeichert haben, ein.
windbg -k -d net:port=<YourDebugPort>,key=<YourKey>
Starten Sie den Zielcomputer neu.
Sobald der Debugger verbunden ist, starten Sie den Zielcomputer neu. Eine Möglichkeit, den PC neu zu starten, besteht darin, den Befehl über die shutdown -r -t 0
Eingabeaufforderung eines Administrators zu verwenden.
Nach dem Neustart des Ziel-PCs sollte der Debugger automatisch eine Verbindung herstellen.
Problembehandlung
Problembehandlung für Ziel
Vergewissern Sie sich, dass der Windows KDNET-USB-EMM-Netzwerkadapter unter Netzwerkadaptern in Windows Geräte-Manager vorhanden ist.
Die Geräteeigenschaften werden angezeigt, wenn der Controller für die Verwendung durch den Windows-Kerneldebugger reserviert ist.
Problembehandlung bei Host
Vergewissern Sie sich, dass der Windows KDNET-USB-EMM-Netzwerkadapter unter Netzwerkadaptern in Windows Geräte-Manager vorhanden ist.
Auf dem Host wird die KDNET-EEM-Verbindung mit dem USB-Typ A-Anschluss angezeigt.
Intel PCI – Verbindungsmeldungen in den Debuggerkonsolenfenstern werden erneut angezeigt und können nicht in das Ziel eingegliedert werden – SkipPciProbeDebugDevice
Wenn die folgende Meldung in der KDNET-Debuggerkonsole auftritt, kann keine Unterbrechung in das Ziel initiiert werden oder Probleme mit bestimmten Befehlen auftreten (z. B. kdfiles), kann es daran liegen, dass KDNET ein Out-of-Sequence-Pingpaket empfängt."
... 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.
Dieses Problem kann auftreten, da der pci.sys Treiber das Debuggerät falsch probiert. Um die Fehler zu beseitigen, erstellen Sie den folgenden Registrierungseintrag auf dem ZIELgerät an einer Administrator-Eingabeaufforderung.
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\SERVICES\kdnet /v SkipPciProbeDebugDevice /t REG_DWORD /d 1 /f
Starten Sie dann den Zielcomputer neu.
shutdown /r /t 0
Sobald das Gerät neu gestartet wird, sollten die Fehler verschwinden, und Befehle sollten wie erwartet funktionieren.
Siehe auch
Automatisches Einrichten des KDNET-Netzwerkkernel-Debuggings
Manuelles Debuggen des KDNET-Netzwerkkerns einrichten
Einrichten des USB 3.0 xHCI-DBC-Kernelmodusdebuggings (KDUSB)