Manuelles Debugging im Kernel-Modus über ein serielles Kabel einrichten

Das Debuggging-Tool für Windows unterstützt das Kerneldebugging über ein Null-Modem-Kabel. Null-Modem-Kabel sind serielle Kabel, die für das Senden von Daten zwischen zwei seriellen Anschlüssen konfiguriert wurden. Verwechseln Sie keine Null-Modem-Kabel mit seriellen Standardkabeln. Serielle Standardkabel verbinden keine seriellen Anschlüsse miteinander. Informationen dazu, wie Null-Modem-Kabel verkabelt werden, finden Sie unter Null-Modem-Kabelverdrahtung.

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

Einrichten des Zielcomputers

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 den sicheren Start wieder aktivieren, nachdem Sie mit dem Debuggen fertig sind und das Kerneldebugging deaktiviert haben.

  1. Öffnen Sie auf dem Zielcomputer ein Eingabeaufforderungsfenster als Administrator, und geben Sie die folgenden Befehle ein, wobei n die Nummer des COM-Ports ist, der für das Debuggen auf dem Zielcomputer verwendet wird und die Rate die für das Debuggen verwendete Baudrate ist:

    bcdedit /debug on

    bcdedit /dbgsettings serial debugport:n baudrate:rate

    Beachten Sie, dass die Baudrate auf dem Hostcomputer und auf dem Zielcomputer identisch sein muss. Die empfohlene Rate beträgt 115200.

  2. Starten Sie den Zielcomputer neu.

Starten der Debuggingsitzung

Verbinden das Null-Modem-Kabel an die COM-Ports, die Sie für das Debuggen auf dem Host- und Zielcomputer ausgewählt haben.

Verwenden von WinDbg

Öffnen Sie auf dem Hostcomputer WinDbg. Wählen Sie im Menü Datei die Option Kerneldebugging. Öffnen Sie im Dialogfeld Kerneldebugging die Registerkarte COM. Geben Sie im Feld Baudrate die Rate ein, die Sie für das Debuggen ausgewählt haben. Geben sie im Feld Port COMn ein, wobei n die COM-Portnummer ist, die Sie für das Debuggen auf dem Host-Computer ausgewählt haben. Wählen Sie OK aus.

Sie können eine Sitzung auch mit WinDbg starten, indem Sie den folgenden Befehl in ein Eingabeaufforderungsfenster eingeben. n ist die Nummer des COM-Ports, der für das Debuggen auf dem Hostcomputer verwendet wird, und Rate ist die für das Debuggen verwendete Baudrate:

windbg -k com:port=COMn,baud=rate

Verwenden von KD

Öffnen Sie auf dem Hostcomputer ein Eingabeaufforderungsfenster, und geben Sie den folgenden Befehl ein, wobei n die Nummer des COM-Ports ist, der für das Debuggen auf dem Hostcomputer verwendet wird, und die Rate ist die für das Debuggen verwendete Baudrate:

kd -k com:port=COMn,baud=rate

Verwenden von Umgebungsvariablen

Auf dem Hostcomputer können Sie Umgebungsvariablen verwenden, um den COM-Port und die Baudrate anzugeben. Anschließend müssen Sie nicht bei jedem Start einer Debugging-Sitzung die Port- und Baudrate angeben. Um Umgebungsvariablen zum Angeben der COM-Port- und Baudrate zu verwenden, öffnen Sie ein Eingabeaufforderungsfenster, und geben Sie die folgenden Befehle ein, wobei n die Nummer des COM-Ports ist, der für das Debuggen auf dem Hostcomputer verwendet wird, und die Rate ist die für das Debuggen verwendete Baudrate:

  • set _NT_DEBUG_PORT=COMn
  • set _NT_DEBUG_BAUD_RATE=rate

Um eine Debugging-Sitzung zu starten, öffnen Sie ein Eingabeaufforderungsfenster, und geben Sie einen der folgenden Befehle ein:

  • kd
  • windbg

Problembehandlungs-Tipps für das Debuggen über ein serielles Kabel

Angeben des richtigen COM-Ports für Host und Ziel

Ermitteln Sie die Anzahl der COM-Ports, die Sie für das Debuggen auf dem Host- und Zielcomputer verwenden. Angenommen, Sie haben ihr Null-Modem-Kabel auf dem Hostcomputer und COM2 auf dem Zielcomputer angeschlossen.

Öffnen Sie auf dem Zielcomputer ein Eingabeaufforderungsfenster als Administrator, und geben Sie bcdedit /dbgsettings ein. Wenn Sie COM2 auf dem Zielcomputer verwenden, sollte die Ausgabe von bcdedit angezeigt werden debugport 2.

Geben Sie auf dem Hostcomputer beim Starten des Debuggers oder beim Festlegen von Umgebungsvariablen den richtigen COM-Port an. Wenn Sie COM1 auf dem Hostcomputer verwenden, verwenden Sie eine der folgenden Methoden, um den COM-Port anzugeben.

  • Geben Sie in WinDbg im Dialogfeld Kerneldebugging COM1 in das Feld Port ein.
  • windbg -k com:port=COM1, ...
  • kd -k com:port=COM1, ...
  • set _NT_DEBUG_PORT=COM1

Baudrate muss auf Host und Ziel identisch sein

Die für das Debuggen über ein serielles Kabel verwendete Baudrate muss auf denselben Wert auf den Host- und Zielcomputern festgelegt werden. Angenommen, Sie haben eine Baudrate von 115200 gewählt.

Öffnen Sie auf dem Zielcomputer ein Eingabeaufforderungsfenster als Administrator, und geben Sie bcdedit /dbgsettings ein. Die Ausgabe von bcdedit sollte angezeigt werden baudrate 115200.

Geben Sie auf dem Host-Computer die richtige Baudrate an, wenn Sie den Debugger starten oder Umgebungsvariablen festlegen. Verwenden Sie eine der folgenden Methoden, um eine Baudrate von 115200 anzugeben.

  • Geben Sie in WinDbg im Dialogfeld Kerneldebugging 115200 in das Feld Baudrate ein.
  • windbg -k ..., baud=115200
  • kd -k ..., baud=115200
  • set _NT_DEBUG_BAUD_RATE=115200

Null-Modem-Kabelverdrahtung

Die folgenden Tabellen zeigen, wie Null-Modem-Kabel verdrahtet werden.

9-Pin-Verbinder

Verbinder 1 Verbinder 2 Signale
2 3 Tx - Rx
3 2 Rx - Tx
7 8 RTS - CTS
8 7 CTS - RTS
4 1+6 DTR - (CD+DSR)
1+6 4 (CD+DSR) - DTR
5 5 Signalgrund

25-Pin-Verbinder

Verbinder 1 Verbinder 2 Signale
2 3 Tx - Rx
3 2 Rx - Tx
4 5 RTS - CTS
5 4 CTS - RTS
6 20 DSR - DTR
20 6 DTR - DSR
7 7 Signalgrund

Signalkürzel

Abkürzung Signal
Tx Übertragen von Daten
Rx Empfangen von Daten
RTS Sendeanforderung
CTS Zu sendende Löschung
DTR Datenterminal bereit
DSR Datensatz bereit
CD Netzbetreibererkennung

Zusätzliche Informationen

Eine vollständige Dokumentation des Befehls bcdedit finden Sie unter BCDEdit Options Reference.

Weitere Informationen

Manuelles Einrichten des Debuggens im Kernelmodus