Freigeben über


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.

Screenshot der Geräte-Manager mit hervorgehobener Option

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.

Foto der Seite eines Surface Pro X mit zwei USB-C-Anschlüssen.

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.

  1. 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.

  2. Suchen Sie das Hilfsprogramm kdnet.exe. Standardmäßig befinden sich die Dateien hier.

    C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

  3. Ö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.
    
  4. 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.

  1. 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.

  2. 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
  1. 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

  2. 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.

Screenshot von Geräte-Manager mit Synopsys USB 3.0 Dual-Role Controller, der angibt, dass der Controller 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.

Screenshot der Geräte-Manager anzeigen des Netzwerkknotens mit einem Windows KDNET USB-EEM-Netzwerkadaptereintrag.

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)

Einrichten des USB-KDNET-Kernelmodusdebuggings (KDNET-USB)