Freigeben über


Manuelles Einrichten des Kernelmodusdebuggings eines virtuellen Computers mithilfe eines virtuellen COM-Ports

Debugging Tools für Windows unterstützt das Kernel-Debugging einer virtuellen Maschine. Der virtuelle Computer kann sich auf demselben physischen Computer wie der Debugger oder auf einem anderen Computer befinden, der mit demselben Netzwerk verbunden ist. In diesem Thema wird beschrieben, wie Sie das Debuggen eines virtuellen Computers manuell mithilfe eines virtuellen COM-Ports über KDCOM einrichten.

Die Verwendung von virtuellen KDNET-Netzwerken ist eine schnellere Option und wird empfohlen. Weitere Informationen finden Sie unter Einrichten des Netzwerk-Debugging eines virtuellen Computers mit KDNET.

Einrichten des virtuellen Zielcomputers

Der Computer, der den Debugger aufruft, wird als Hostcomputer und der virtuelle Computer, der debuggt wird, wird als virtueller Zielcomputer bezeichnet.

Wichtig

Bevor Sie BCDEdit verwenden, um Startinformationen zu ändern, müssen Sie Möglicherweise Windows-Sicherheitsfeatures wie BitLocker und sicherer Start auf dem Test-PC vorübergehend anhalten. Aktivieren Sie diese Sicherheitsfeatures erneut, wenn tests abgeschlossen sind, und verwalten Sie den Test-PC entsprechend, wenn die Sicherheitsfeatures deaktiviert sind.

  1. Geben Sie auf dem virtuellen Computer in einem Eingabeaufforderungsfenster mit erhöhten Rechten die folgenden Befehle ein.

    bcdedit /debug on

    bcdedit /dbgsettings serial debugport:nbaudrate:115200

    dabei ist n die Nummer eines COM-Ports auf dem virtuellen Computer.

  2. Konfigurieren Sie auf dem virtuellen Computer den COM-Port so, dass er einer benannten Pipe zugeordnet wird. Der Debugger stellt über diese Pipe eine Verbindung her. Weitere Informationen zum Erstellen dieser Pipeline finden Sie in der Dokumentation Ihrer virtuellen Maschine.

  3. Starten Sie den Debugger im Modus mit erhöhten Rechten, z. B. über eine Administrator-Eingabeaufforderung. Der Debugger muss im Modus mit erhöhten Rechten ausgeführt werden, wenn eine VM über eine serielle Pipe debuggt wird. Sobald der Debugger angefügt und ausgeführt wird, starten Sie den virtuellen Zielcomputer neu.

Starten der Debugsitzung mit WinDbg

Öffnen Sie auf dem Hostcomputer WinDbg als Administrator. Der Debugger muss im Modus mit erhöhten Rechten ausgeführt werden, wenn eine VM über eine serielle Pipe debuggt wird. Wählen Sie im Menü Datei die Option Kerneldebugging. Öffnen Sie im Dialogfeld „Kerneldebuggen“ die Registerkarte COM. Aktivieren Sie das Kontrollkästchen Pipe und dann das Kontrollkästchen Neu verbinden. Geben Sie in Baudrate 115200 ein. Geben Sie in Zurücksetzungen den Wert 0 ein.

Wenn der Debugger auf demselben Computer wie der virtuelle Computer ausgeführt wird, geben Sie Folgendes für Portein.

\\.\pipe\PipeName.

Wenn der Debugger auf einem anderen Computer als dem virtuellen Computer ausgeführt wird, geben Sie Folgendes für Portein.

\\ VMHost\pipe\PipeName

Wählen Sie OKaus.

Sie können WinDbg auch über die Befehlszeile starten. Wenn der Debugger auf demselben physischen Computer wie der virtuelle Computer ausgeführt wird, geben Sie den folgenden Befehl in ein Eingabeaufforderungsfenster ein.

windbg -k com:pipe,port=\\.\pipe\PipeName,resets=0,reconnect

Wenn der Debugger auf einem anderen physischen Computer als dem virtuellen Computer ausgeführt wird, geben Sie den folgenden Befehl in ein Eingabeaufforderungsfenster ein.

windbg -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect

Starten der Debugsitzung mit KD

Um einen virtuellen Computer zu debuggen, der auf demselben physischen Computer wie der Debugger ausgeführt wird, geben Sie den folgenden Befehl in ein Eingabeaufforderungsfenster mit erhöhten Rechten ein.

kd -k com:pipe,port=\\.\pipe\PipeName,resets=0,reconnect

Um einen virtuellen Computer zu debuggen, der auf einem anderen physischen Computer als dem Debugger ausgeführt wird, geben Sie den folgenden Befehl in ein Eingabeaufforderungsfenster ein.

kd -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect

Parameter

VMHost
Gibt den Namen des Computers an, auf dem der virtuelle Computer ausgeführt wird.

PipeName
Gibt den Namen der Pipe an, die Sie auf dem virtuellen Computer erstellt haben.

resets=0
Angegeben wird, dass eine unbegrenzte Anzahl von Reset-Paketen an das Ziel gesendet werden kann, wenn der Host und das Ziel synchronisiert werden. Verwenden Sie den Parameter resets=0 für virtuelle Microsoft-PCs und andere virtuelle Computer, deren Pipes überschüssige Bytes löschen. Verwenden Sie diesen Parameter nicht für VMware oder andere virtuelle Computer, deren Rohre nicht alle überschüssigen Bytes ablegen.

reconnect
Bewirkt, dass der Debugger die Pipe automatisch trennt und erneut verbindet, wenn ein Lese-/Schreibfehler auftritt. Wenn der Debugger die genannte Pipe beim Starten des Debuggers nicht findet, bewirkt der Parameter reconnect, dass der Debugger darauf wartet, dass eine Pipe mit dem Namen PipeName angezeigt wird. Verwenden Sie reconnect für Virtual PC und andere virtuelle Computer, die ihre Pipes während eines Computerneustarts zerstören und neu erstellen. Verwenden Sie diesen Parameter nicht für VMware oder andere virtuelle Computer, die ihre Rohre während eines Computerneustarts beibehalten.

Weitere Informationen zu zusätzlichen Befehlszeilenoptionen finden Sie unter KD Command-Line Options oder WinDbg Command-Line Options.

Virtuelle Computer der Generation 2

Standardmäßig werden COM-Ports nicht auf virtuellen Computern der Generation 2 angezeigt. Sie können COM-Ports über PowerShell oder WMI hinzufügen. Damit die COM-Ports in der Hyper-V-Manager-Konsole angezeigt werden können, müssen sie mit einem Pfad erstellt werden.

Führen Sie die folgenden Schritte aus, um das Kerneldebugging mithilfe eines COM-Ports auf einem virtuellen Computer der 2. Generation zu aktivieren:

  1. Deaktivieren Sie den sicheren Start, indem Sie diesen PowerShell-Befehl eingeben:

    Set-VMFirmware –VmnameVmName–EnableSecureBoot Off

    dabei ist vmName- der Name Ihres virtuellen Computers.

  2. Fügen Sie dem virtuellen Computer einen COM-Port hinzu, indem Sie diesen PowerShell-Befehl eingeben:

    Set-VMComPort –VMNameVmName1 \\.\pipe\PipeName

    Mit dem folgenden Befehl wird beispielsweise der erste COM-Port auf dem virtuellen Computer TestVM konfiguriert, um eine Verbindung mit der benannten Pipe TestPipe auf dem lokalen Computer herzustellen.

    Set-VMComPort –VMName TestVM 1 \\.\pipe\TestPipe

  3. Sobald der Debugger angehängt und ausgeführt wird, beenden und starten Sie den virtuellen Computer neu, um die COM-Ports in der VM zu aktivieren. Die emulierten UARTs sind nicht zum Debuggen verfügbar, es sei denn, mindestens eine UART-Einheit ist tatsächlich mit einem Pipenamen konfiguriert. Sie können außerdem nicht im laufenden Betrieb hinzugefügt werden.

  4. Aktivieren Sie den sicheren Start erneut, nachdem Sie die Konfigurationsänderungen aktualisiert haben.

Weitere Informationen zu VMs der Generation 2 finden Sie unter Generation 2 Virtual Machine Overview.

Hinweise

Wenn der Zielcomputer nicht mehr reagiert, wenn der Zielcomputer aufgrund einer früheren Kerneldebugaktion immer noch gestoppt ist oder wenn Sie die Befehlszeilenoption -b verwendet haben, unterbricht der Debugger den Zielcomputer sofort.

Andernfalls wird der Zielcomputer so lange ausgeführt, bis der Debugger anordnet, dass er unterbrochen wird.

Behebung von Firewall- und Netzwerkzugriffsproblemen

Ihr Debugger (WinDbg oder KD) muss über die Firewall Zugriff haben. Dies kann sogar der Fall für virtuelle serielle Ports sein, die von Netzwerkadaptern unterstützt werden.

Wenn Sie von Windows aufgefordert werden, die Firewall beim Laden des Debuggers zu deaktivieren, wählen Sie alle drei Felder aus.

Je nach den Spezifika der verwendeten VM müssen Sie möglicherweise die Netzwerkeinstellungen für Ihre virtuellen Maschinen ändern, um sie mit dem Microsoft Kernel Network Debug Adapter zu verbinden. Andernfalls haben die virtuellen Computer keinen Zugriff auf das Netzwerk.

Windows-Firewall

Sie können die Systemsteuerung verwenden, um den Zugriff über die Windows-Firewall zu ermöglichen. Öffnen Sie die Systemsteuerung > System und Sicherheit, und wählen Sie "App über die Windows-Firewall zulassen" aus. Suchen Sie in der Liste der Anwendungen Windows GUI Symbolic Debugger und Windows-Kerneldebugger. Verwenden Sie die Kontrollkästchen, um diese beiden Anwendungen über die Firewall zuzulassen. Starten Sie die Debuganwendung (WinDbg oder KD) neu.

VMs von Drittanbietern

VMWare

Wenn Sie den virtuellen Computer mithilfe der VMWare-Funktionen (z. B. der Schaltfläche „Zurücksetzen“) neu starten, beenden Sie WinDbg und starten dann WinDbg neu, um das Debuggen fortzusetzen. Während des Debuggens virtueller Computer verbraucht VMWare häufig 100 % der CPU.

Weitere Informationen

Einrichten des Netzwerkdebuggings einer virtuellen Maschine mit KDNET

Manuelles Einrichten des Kernelmodusdebuggings

Einrichten des Netzwerk-Debuggings eines virtuellen Hosts