Automatisches Einrichten des Debuggens des KDNET-Netzwerkkernels

Debugtools für Windows, unterstützt kerneldebuggen über ein Netzwerk. In diesem Artikel wird beschrieben, wie Sie das Netzwerkdebuggen mithilfe des kdnet.exe Setuptools automatisch einrichten.

Der Computer, auf dem der Debugger ausgeführt wird, heißt Hostcomputer, und der zu debuggende Computer wird als Zielcomputer bezeichnet. Auf dem Hostcomputer muss Windows 7 oder höher ausgeführt werden, und auf dem Zielcomputer muss Windows 8 oder höher ausgeführt werden.

Ermitteln der IP-Adresse des Hostcomputers

  1. Vergewissern Sie sich, dass die Ziel- und Host-PCs über ein entsprechendes Netzwerkkabel mit einem Netzwerkhub oder Switch verbunden sind.

  2. Öffnen Sie auf dem Hostcomputer eine Eingabeaufforderung, und geben Sie ein IPConfig , um die IP-Konfiguration anzuzeigen.

  3. Suchen Sie in der Befehlsausgabe die IPv4-Adresse des Ethernet-Adapters.

...

Ethernet adapter Ethernet:
...

IPv4 Address. . . . . . . . . . . : <YourHostIPAddress>
...

  1. Notieren Sie sich die IPv4-Adresse des Netzwerkadapters, den Sie zum Debuggen verwenden möchten.

Einrichten des Hosts und der Zielcomputer

Verwenden Sie das Hilfsprogramm kdnet.exe, um die Debuggereinstellungen auf dem Ziel-PC automatisch zu konfigurieren, indem Sie die folgenden Schritte ausführen.

  1. Vergewissern Sie sich, dass die Windows-Debugtools auf dem Hostsystem installiert sind. Informationen zum Herunterladen und Installieren der Debuggertools finden Sie unter Debuggen von Tools für Windows.

  2. Suchen Sie die dateienkdnet.exe und VerifiedNICList.xml . Standardmäßig befinden sich die Dateien am folgenden Speicherort:

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

    Bei diesen Anweisungen wird davon ausgegangen, dass auf beiden PCs eine 64-Bit-Version von Windows sowohl auf dem Ziel als auch auf dem Host ausgeführt wird. Wenn dies nicht der Fall ist, besteht der beste Ansatz darin, die gleiche "Bitanzahl" von Tools auf dem Host auszuführen, die das Ziel ausführt. Wenn auf dem Ziel beispielsweise 32-Bit-Windows ausgeführt wird, führen Sie eine 32-Version des Debuggers auf dem Host aus. Weitere Informationen finden Sie unter Auswählen der 32-Bit- oder 64-Bit-Debugtools.

  3. Kopieren Sie auf dem Hostcomputer die beiden Dateien auf eine Netzwerkfreigabe oder ein Laufwerk, damit sie auf dem Zielcomputer verfügbar sind.

  4. Erstellen Sie auf dem Zielcomputer ein Verzeichnis C:\KDNET , und kopieren Sie die kdnet.exe - und VerifiedNICList.xml-Dateien in dieses Verzeichnis.

    Wichtig

    Bevor Sie kdnet.exe zum Ändern der Startinformationen verwenden, müssen Sie möglicherweise Windows-Sicherheitsfeatures wie BitLocker und Secure Boot auf dem Test-PC vorübergehend anhalten. Aktivieren Sie diese Sicherheitsfeatures nach Abschluss des Tests erneut, und verwalten Sie den Test-PC entsprechend, wenn die Sicherheitsfeatures deaktiviert sind.

  5. Öffnen Sie auf dem Zielcomputer eine Eingabeaufforderung als Administrator. Geben Sie diesen Befehl ein, um zu überprüfen, ob der Zielcomputer über einen unterstützten Netzwerkadapter verfügt:

    C:\KDNET>kdnet.exe
    Network debugging is supported on the following NICs:
    busparams=1.0.0, Broadcom NetXtreme Gigabit Ethernet, Plugged in.  
    This Microsoft hypervisor supports using KDNET in guest VMs.
    
  6. Wenn die Ausgabe von kdnet.exe angibt, dass der Netzwerkadapter auf dem Ziel unterstützt wird, können Sie fortfahren.

  7. Geben Sie den folgenden Befehl ein, um die IP-Adresse des Hostsystems festzulegen und einen eindeutigen Verbindungsschlüssel zu generieren. Verwenden Sie die IP-Adresse oder den Namen des Hostsystems. Wählen Sie eine eindeutige Portadresse für jedes Ziel-Host-Paar aus, mit dem Sie arbeiten, innerhalb des empfohlenen Bereichs von 50000 bis 50039.

    C:\KDNET>kdnet.exe <HostComputerIPAddress> <YourDebugPort> 
    
    Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
    Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
    
  8. Kopieren Sie den zurückgegebenen Schlüssel in einen Editor .txt Datei.

Verbinden von WinDbg mit dem Ziel zum Kerneldebuggen

Öffnen Sie winDbg auf dem Hostcomputer. Wählen Sie im Menü Dateidie Option Kerneldebuggen aus. Öffnen Sie im Dialogfeld Kerneldebuggen die Registerkarte Net . Fügen Sie Ihre Portnummer und den Schlüssel ein, die im Editor .txt Zuvor gespeichert wurden. Klicken Sie auf OK.

Sie können eine WinDbg-Sitzung auch starten, indem Sie eine Eingabeaufforderung öffnen und den folgenden Befehl eingeben. <YourPort> ist der Port, den Sie zuvor ausgewählt haben, und <YourKey> ist der Schlüssel, der zuvor von kdnet.exe zurückgegeben wurde. Fügen Sie den Schlüssel ein, den Sie zuvor .txt Datei im Editor gespeichert haben.

windbg.exe -k -d net:port=<YourDebugPort>,key=<YourKey> 

Der im Beispiel gezeigte optionale -d Parameter ermöglicht einen frühen Einbruch. Weitere Informationen finden Sie unter WinDbg-Befehlszeilenoptionen.

Wenn Sie aufgefordert werden, WinDbg den Zugriff auf den Port über die Firewall zu gestatten, erlauben Sie WinDbg den Zugriff auf den Port für alle drei verschiedenen Netzwerktypen.

Screenshot: Windows-Sicherheit Warnung mit Auswahlmöglichkeiten, um den Zugriff auf alle drei Netzwerktypen zu ermöglichen.

An diesem Punkt wartet der Debugger auf die erneute Verbindung des Ziels. Text wird im Debuggerbefehlsfenster angezeigt. Dieser Text ähnelt dem folgenden:

Microsoft (R) Windows Debugger Version 1.0.1908.30002 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.

Using NET for debugging
Opened WinSock 2.0
Waiting to reconnect...

Starten Sie den Ziel-PC neu.

Sobald sich der Debugger bei "Warten auf die Erneute Verbindung..." befindet Starten Sie den Zielcomputer neu. Eine Möglichkeit, den PC neu zu starten, besteht darin, diesen Befehl über die Eingabeaufforderung eines Administrators zu verwenden.

shutdown -r -t 0 

Nachdem der Ziel-PC neu gestartet wurde, sollte der Debugger automatisch eine Verbindung herstellen.

Tipps zur Problembehandlung

Debuggen von Anwendungen muss über eine Firewall zulässig sein

Auf der Hostseite, auf der der Debugger ausgeführt wird, müssen alle Netzwerktypen aktiviert sein, damit der Debugger über die Firewall mit dem Ziel kommunizieren kann.

Verwenden Sie die Systemsteuerung, um den Zugriff über die Firewall zuzulassen.

  1. Öffnen Sie Systemsteuerung > System und Sicherheit, und wählen Sie App über die Windows-Firewall zulassen aus.

    • (WinDbg) Suchen Sie in der Liste der Anwendungen nach WinDbg Engine Process (TCP) (all).

    • (WinDbg (klassisch)) Suchen Sie in der Liste der Anwendungen nach symbolischem Windows GUI Debugger und Windows Kernel Debugger.

  2. Verwenden Sie die Kontrollkästchen, um diese beiden Anwendungen durch alle drei verschiedenen Netzwerktypen zuzulassen.

  3. Scrollen Sie nach unten, und wählen Sie OK aus, um die Firewalländerungen zu speichern. Starten Sie den Debugger neu.

    Screenshot: Systemsteuerung Firewallkonfiguration mit Windows GUI Symboldebugger und Windows Kernel Debugger-Anwendungen mit aktivierten drei Netzwerktypen

Verwenden von Ping zum Testen der Konnektivität

Wenn der Debugger ein Zeitüberschreitungsintervall aufweist und keine Verbindung herstellt, verwenden Sie den ping-Befehl auf dem Ziel-PC, um die Konnektivität zu überprüfen.

   C:\>Ping <HostComputerIPAddress>

Auswählen eines Ports für das Netzwerkdebugging

Wenn der Debugger ein Zeitüberschreitungs- und keine Verbindung herstellt, liegt dies möglicherweise daran, dass die Standardportnummer 50000 bereits verwendet wird oder blockiert ist.

Sie können eine beliebige Portnummer zwischen 49152 und 65535 auswählen. Der empfohlene Bereich liegt zwischen 50000 und 50039. Der ausgewählte Port wird für den exklusiven Zugriff durch den Debugger geöffnet, der auf dem Hostcomputer ausgeführt wird.

Der Bereich der Portnummern, die für das Netzwerkdebugging verwendet werden können, kann durch die Netzwerkrichtlinie Ihres Unternehmens eingeschränkt werden. Wenden Sie sich an Ihre Netzwerkadministratoren, um zu ermitteln, ob die Richtlinie Ihres Unternehmens den Bereich der Ports einschränkt, die für das Netzwerkdebugging verwendet werden können.

Unterstützte Netzwerkadapter

Wenn beim Ausführen von kdnet.exe "Netzwerkdebugging wird auf keinem der Netzwerkkarten auf diesem Computer unterstützt" angezeigt wird, wird der Netzwerkadapter nicht unterstützt.

Der Hostcomputer kann einen beliebigen Netzwerkadapter verwenden, aber der Zielcomputer muss einen Netzwerkadapter verwenden, der von Debugtools für Windows unterstützt wird. Eine Liste der unterstützten Netzwerkadapter finden Sie unter Unterstützte Ethernet-NICs für das Debuggen von Netzwerkkernen in Windows 10 und Unterstützte Ethernet-NICs für das Debuggen von Netzwerkkernen in Windows 8.1.

Aktivieren anderer Debugtypen

Ab Windows 10 Update vom Oktober 2020 (20H2) werden die folgenden Optionen unterstützt, um vier Arten des Debuggens zu aktivieren:

Es kann eine beliebige Kombination von Debugtypen angegeben werden.

Wenn keine Debugtypen angegeben werden, wird das Kerneldebuggen aktiviert.

Wenn sowohl Hypervisor- als auch Kerneldebugging aktiviert sind, wird der Hypervisorport auf <YourDebugPort> + 1 festgelegt.

Beispielverwendung

Verwenden Sie die Option - bkw, um das Debuggen von Bootmgr, Kernel und Winload zu aktivieren.

C:\>kdnet.exe <HostComputerIPAddress> <YourDebugPort> -bkw

Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p

Zusammenfassung der Debugtypoptionen

KNDET-Option BESCHREIBUNG Befehl "Gleichwertiger Satz"
b aktiviert bootmgr debugging bcdedit /bootdebug {bootmgr} on
h ermöglicht hypervisordebuggen bcdedit /set hypervisordebug on
k aktiviert kerneldebuggen bcdedit /debug on
w aktiviert das Winload-Debuggen. bcdedit /bootdebug on

Angeben von Busparametern

Wenn kdnet die Busparameter für Ihren Transport nicht automatisch ermitteln kann, geben Sie sie in der Befehlszeile mit der /busparams Option mithilfe dieser Syntax an.

kdnet.exe /busparams [b.d.f] [host] [port] [-[b][h][k][w]]

b.d.f gibt die Busparameter des zu konfigurierenden Geräts an.

Verwenden Sie Geräte-Manager auf dem Zielcomputer, um die PCI-Bus-, Geräte- und Funktionsnummern für den Adapter zu ermitteln, den Sie zum Debuggen verwenden möchten. Geben Sie für Busparameter b ein. d. f , wobei b, d und f die Busnummer, die Gerätenummer und die Funktionsnummer des Adapters sind. Diese Werte werden in Geräte-Manager unter Speicherort auf der Registerkarte Allgemein angezeigt.

Beispiel:

C:\>kdnet.exe /busparams 0.29.7 <HostComputerIPAddress> <YourDebugPort> -bkw

Weitere Informationen