Freigeben über


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

Das Debuggen von Tools für Windows unterstützt das Kerneldebugging eines virtuellen Computers. 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 Netzwerkdebuggings eines virtuellen Computers mit KDNET.

Einrichten des virtuellen Zielcomputers

Der Computer, auf dem der Debugger ausgeführt wird, wird als Hostcomputer bezeichnet, und der virtuelle Computer, der gedebuggt wird, wird als virtueller Zielcomputer bezeichnet.

Wichtig

Bevor Sie BCDEdit zum Ändern der Startinformationen verwenden, müssen Sie möglicherweise die Windows-Sicherheitsfunktionen wie BitLocker und Sicherer Start auf dem Testcomputer vorübergehend aussetzen. Aktivieren Sie diese Sicherheitsfeatures nach Abschluss des Tests erneut, 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:n baudrate: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 wird über diese Pipe verbunden. Weitere Informationen zum Erstellen dieser Pipe finden Sie in der Dokumentation Ihres virtuellen Computers.

  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 sie einen virtuellen Computer über eine serielle Pipe debuggen. 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 sie einen virtuellen Computer über eine serielle Pipe debuggen. Wählen Sie im Menü Datei die Option Kerneldebugging. Öffnen Sie im Dialogfeld "Kerneldebugging" die COM-Registerkarte . Aktivieren Sie das Kontrollkästchen "Pipe ", und aktivieren Sie das Kontrollkästchen "Erneut verbinden" . Geben Sie für Baud Rate 115200 ein. Geben Sie für "Zurücksetzungen" "0" ein.

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

\\.\pipe\PipeName.

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

\\VMHost\pipe\PipeName

Wählen Sie OK aus.

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
Gibt an, dass eine unbegrenzte Anzahl von Zurücksetzungspaketen an das Ziel gesendet werden kann, wenn der Host und das Ziel synchronisiert werden. Verwenden Sie den Parameter resets=0 für Microsoft Virtual PC und andere virtuelle Computer, deren Rohre überschüssige Bytes ablegen. Verwenden Sie diesen Parameter nicht für VMware oder andere virtuelle Computer, deren Rohre nicht alle überschüssigen Bytes ablegen.

wiederverbinden
Bewirkt, dass der Debugger die Verbindung automatisch trennt und erneut verbindet, wenn ein Lese-/Schreibfehler auftritt. Wenn der Debugger beim Starten des Debuggers die benannte Pipe nicht findet, bewirkt der Parameter "Erneute Verbindung", dass der Debugger auf eine Pipe mit dem Namen PipeName wartet. Verwenden Sie die erneute Verbindung für virtuelle PC und andere virtuelle Computer, die ihre Rohre während eines Computerneustarts zerstören und erneut 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-Befehlszeilenoptionen oder WinDbg-Befehlszeilenoptionen.

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, 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 –Vmname VmName –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 –VMName VmName 1 \\.\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 angefügt und ausgeführt wird, beenden Und kalt starten Sie den virtuellen Computer, um die COM-Ports in der VM zu aktivieren. Die emulierten UARTS sind für das Debuggen nicht verfügbar, es sei denn, mindestens eine ist tatsächlich mit einem Pipenamen konfiguriert und kann nicht hot-added 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 Übersicht über virtuelle Computer der Generation 2.

Anmerkungen

Wenn der Zielcomputer nicht mehr reagiert, wird der Zielcomputer aufgrund einer früheren Kerneldebuggingaktion noch angehalten, oder Sie haben die Befehlszeilenoption -b verwendet, der Debugger wechselt sofort in den Zielcomputer.

Andernfalls wird der Zielcomputer weiterhin ausgeführt, bis der Debugger die Unterbrechung anordnet.

Problembehandlung bei Firewalls 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 Spezifischen der verwendeten VM müssen Sie möglicherweise die Netzwerkeinstellungen für Ihre virtuellen Computer ändern, um sie mit dem Microsoft Kernel Network Debug Adapter zu überbrücken. 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 Systemsteuerung > System und Sicherheit, und wählen Sie "App über die Windows-Firewall zulassen" aus. Suchen Sie in der Liste der Anwendungen den symbolischen Windows-GUI-Debugger und den Windows-Kerneldebugger. Verwenden Sie die Kontrollkästchen, um diese beiden Anwendungen über die Firewall zuzulassen. Starten Sie die Debugger-Anwendung (WinDbg oder KD) neu.

VMs von Drittanbietern

VMWare If you restart the virtual machine by using the VMWare facilities (for example, the reset button), exit WinDbg, and then restart WinDbg to continue debugging. Während des Debuggens virtueller Computer verbraucht VMWare häufig 100 % der CPU.

Weitere Informationen

Einrichten des Netzwerkdebuggings eines virtuellen Computers mit KDNET

Manuelles Einrichten des Debuggens im Kernelmodus

Einrichten des Netzwerkdebuggings eines virtuellen Computerhosts