Freigeben über


Debuggen im Live-Kernelmodus mit WinDbg (klassisch)

Es gibt zwei Möglichkeiten, mit WinDbg eine Debugsitzung im Live-Kernelmodus zu initiieren.

WinDbg-Menü

Wenn Sich WinDbg im ruhenden Modus befindet, können Sie eine Kerneldebuggingsitzung starten, indem Sie im Menü "Datei" die Option "Kerneldebugging" auswählen oder STRG+K drücken. Wenn das Dialogfeld "Kerneldebugging " angezeigt wird, klicken Sie auf die entsprechende Registerkarte: NET, 1394, USB, COM oder Lokal. Jede Registerkarte gibt eine andere Verbindungsmethode an.

Eingabeaufforderung

In einem Eingabeaufforderungsfenster können Sie eine Kernelmodus-Debugsitzung initiieren, wenn Sie WinDbg starten. Geben Sie einen der folgenden Befehle ein:

windbg [-y SymbolPath] -k net:port=PortNumber,key=Key[,target=TargetIPAddress|TargetMachineName]

windbg [-y SymbolPath] -k usb:targetname=USBString

windbg [-y SymbolPath] -k com:port=ComPort,baud=BaudRate

windbg [-y SymbolPath] -k com:ipport=SerialTcpIpPort,port=SerialIPAddress

windbg [-y SymbolPath] -k com:pipe,port=\\VMHost\pipe\PipeName[,resets=0][,reconnect]

windbg [-y SymbolPath] -k:modem

windbg [-y SymbolPath] -kl

windbg [-y SymbolPath] -k

Weitere Informationen finden Sie unter WinDbg-Befehlszeilenoptionen.

Umgebungsvariablen

Für das Debuggen über einen seriellen (COM-Port) oder eine 1394-Verbindung können Sie Umgebungsvariablen verwenden, um die Verbindungseinstellungen anzugeben.

Verwenden Sie die folgenden Variablen, um eine serielle Verbindung anzugeben.

set _NT_DEBUG_PORT = ComPort

set _NT_DEBUG_BAUD_RATE = BaudRate

Weitere Informationen finden Sie unter Kernelmodus-Umgebungsvariablen.

Parameter

SymbolPath
Eine Liste der Verzeichnisse, in denen sich Symboldateien befinden. Verzeichnisse in der Liste werden durch Semikolons getrennt. Weitere Informationen finden Sie unter Symbolpfad.

PortNumber
Eine Portnummer, die für das Netzwerkdebugging verwendet werden soll. Sie können eine beliebige Zahl zwischen 49152 und 65535 auswählen. Weitere Informationen finden Sie unter Manuelles Einrichten einer Netzwerkverbindung.

Schlüssel
Der verschlüsselungsschlüssel, der für das Netzwerkdebugging verwendet werden soll. Es wird empfohlen, einen automatisch generierten Schlüssel zu verwenden, der von bcdedit bereitgestellt wird, wenn Sie den Zielcomputer konfigurieren. Weitere Informationen finden Sie unter Manuelles Einrichten einer Netzwerkverbindung.

TargetIPAddress
Die IPv4-Adresse des Zielcomputers.

Wenn die Zieladresse = IP-Adresse angegeben wird, wird dadurch der Debugger eine Verbindung mit dem angegebenen Zielcomputer initiieren, indem ein spezielles Paket an das Ziel gesendet wird, das dazu führt, dass versucht wird, eine Verbindung mit diesem Debugger herzustellen. Der Debugger sendet Pakete wiederholt alle halbe Sekunde an das Ziel und versucht, eine Verbindung herzustellen. Wenn die Verbindung erfolgreich ist, wird vom Ziel eine vorhandene Verbindung abgebrochen und nur mit dieser Instanz des Debuggers kommuniziert. Auf diese Weise können Sie die Kontrolle über die Debugsitzung von einer vorhandenen Debugverbindung wegnehmen.

Wenn das Ziel mit einer Host-IP-Adresse konfiguriert ist und der Debugger auf dem Computer mit der konfigurierten Host-IP-Adresse ausgeführt wird, muss der Parameter "target= IP address" nicht angegeben werden. Wenn das Ziel mit einer Host-IP-Adresse konfiguriert ist, sendet es alle drei Sekunden OFFER-Pakete an den Host. Mit den OFFER-Paketen kann der Debugger eine Verbindung mit dem Host herstellen, wenn keine ZIEL-=IP-Adresse angegeben ist.

Weitere Informationen zum Konfigurieren der Host-IP-Adresse für das Ziel finden Sie unter Einrichten des KDNET-Netzwerkkernkerndebuggings automatisch und manuelles Einrichten des KDNET-Netzwerkkerneldebuggings.

TargetMachineName
Der Computername des Ziel-PCs. Um den Computernamen zu verwenden, muss das DNS-System im Netzwerk den Computernamen der IP-Adresse des Ziel-PCs zugeordnet haben.

1394Channel
Die Kanalnummer 1394. Gültige Kanalnummern sind eine beliebige ganze Zahl zwischen 0 und 62 einschließlich. 1394Channel muss mit der vom Zielcomputer verwendeten Nummer übereinstimmen, hängt jedoch nicht vom physischen 1394-Port ab, der auf dem Adapter ausgewählt wurde. Weitere Informationen finden Sie unter Manuelles Einrichten einer 1394-Verbindung.

1394Protocol
Das Verbindungsprotokoll, das für die 1394-Kernelverbindung verwendet werden soll. Dies kann fast immer weggelassen werden, da der Debugger automatisch das richtige Protokoll auswäht. Wenn Sie dies manuell festlegen möchten und der Zielcomputer Windows XP ausführt, sollte 1394Protocol auf "Kanal" festgelegt werden. Wenn auf dem Zielcomputer Windows Server 2003 oder höher ausgeführt wird, sollte 1394Protocol auf "Instanz" festgelegt werden. Wenn er ausgelassen wird, verwendet der Debugger standardmäßig das für den aktuellen Zielcomputer geeignete Protokoll. Dies kann nur über die Befehlszeile oder die Umgebungsvariablen angegeben werden, nicht über die grafische WinDbg-Schnittstelle.

USBString
Ein USB-Verbindungszeichenfolge. Dies muss mit der mit der Startoption "/targetname" angegebenen Zeichenfolge übereinstimmen. Weitere Informationen finden Sie unter Manuelles Einrichten einer USB 3.0-Verbindung und Manuelles Einrichten einer USB 2.0-Verbindung.

Aufführen
Der Name des COM-Ports. Dies kann im Format "com2" oder im Format "\\.\com2" vorliegen, sollte aber nicht einfach eine Zahl sein. Weitere Informationen finden Sie unter Manuelles Einrichten einer seriellen Verbindung.

BaudRate
Die Baudrate. Dies kann 9600, 19200, 38400, 57600 oder 115200 sein.

SerialTcpIpPort
Der TCP-ZIEL-IP-Port des emulierten seriellen COM-Ports.

SerialIPAddress
Die TCP-Ziel-IP-Adresse des emulierten seriellen COM-Ports.

VMHost
Beim Debuggen eines virtuellen Computers gibt VMHost den Namen des physischen Computers an, auf dem der virtuelle Computer ausgeführt wird. Wenn der virtuelle Computer auf demselben Computer wie der Kerneldebugger selbst ausgeführt wird, verwenden Sie einen einzelnen Punkt (.) für VMHost. Weitere Informationen finden Sie unter Einrichten einer Verbindung mit einem virtuellen Computer.

PipeName
Der Name der pipe, die vom virtuellen Computer für die Debugverbindung erstellt wurde.

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. Dieser Parameter ist nur beim Debuggen bestimmter Arten virtueller Computer erforderlich.

wiederverbinden
Bewirkt, dass der Debugger die Verbindung automatisch trennt und erneut verbindet, wenn ein Lese-/Schreibfehler auftritt. Wenn die benannte Pipe beim Starten des Debuggers nicht gefunden wird, bewirkt der Parameter für die erneute Verbindung, dass sie auf die Anzeige einer Pipe dieses Namens wartet. Dieser Parameter ist nur beim Debuggen bestimmter Arten virtueller Computer erforderlich.

-Kl
Bewirkt, dass der Debugger lokales Kernelmodusdebugging durchführt. Weitere Informationen finden Sie unter Debuggen im lokalen Kernelmodus.

Beispiele

Die folgende Batchdatei kann zum Einrichten und Starten einer Debugsitzung über eine COM-Portverbindung verwendet werden.

set _NT_SYMBOL_PATH=d:\mysymbols
set _NT_DEBUG_PORT=com1
set _NT_DEBUG_BAUD_RATE=115200
set _NT_DEBUG_LOG_FILE_OPEN=d:\debuggers\logfile1.log
windbg -k

Die folgenden Befehlszeilen können verwendet werden, um WinDbg ohne Umgebungsvariablen zu starten.

windbg -y d:\mysymbols -k com:port=com2,baud=57600

windbg -y d:\mysymbols -k:com:port=\\.\com2,baud=115200

windbg -y d:\mysymbols -k net:port=50000,key=AutoGeneratedKey

windbg -y d:\mysymbols -k net:port=50000,key=AutoGeneratedKey,target=TargetIPAddress

Weitere Informationen

WinDbg-Befehlszeilenoptionen

Kernelmodus-Umgebungsvariablen