Verwendung von KDbgCtrl

Das Tool KDbgCtrl (Kerneldebugsteuerung, kdbgctrl.exe) kann verwendet werden, um die Kerneldebugverbindung vom Zielcomputer aus zu steuern.

Um dieses Tool verwenden zu können, muss auf Ihrem Zielcomputer Windows Server 2003 oder eine höhere Version von Windows ausgeführt werden.

KDbgCtrl kann fünf verschiedene Einstellungen steuern: Vollständiges Kerneldebuggen, automatisches Kerneldebuggen, User-Mode Fehlerbehandlung, Blockierung des Kerneldebuggens und die Größe des DbgPrint-Puffers.

Um KDbgCtrl verwenden zu können, müssen Sie das Kerneldebuggen bereits vor dem letzten Start in den Starteinstellungen des Zielcomputers aktiviert haben. KDbgCtrl kann nicht verwendet werden, um das Kerneldebuggen zu aktivieren, wenn dies nicht geschehen ist. Ausführliche Informationen zu diesen Starteinstellungen finden Sie unter Startparameter zum Aktivieren des Debuggens .

Vollständiges Kerneldebuggen

Wenn das vollständige Kerneldebuggen aktiviert ist, kann ein Kerneldebugger, der auf dem Hostcomputer ausgeführt wird, in den Zielcomputer einbrechen. Der Zielcomputer wird in den Kerneldebugger einbrechen, wenn eine Kernelmodus-Ausnahme auftritt. Nachrichten vom Ziel an den Host, z. B. DbgPrint-Ausgabe , Symbollademeldungen und umgeleitete Benutzermodusdebugger, sind ebenfalls zulässig.

Wenn diese Einstellung deaktiviert ist, werden alle Signale vom Hostcomputer vom Ziel ignoriert.

Das vollständige Kerneldebuggen ist standardmäßig aktiviert. Um den aktuellen Einstellungswert zu überprüfen, verwenden Sie kdbgctrl -c. Verwenden Sie zum Deaktivieren dieser Einstellung kdbgctrl -d. Um diese Einstellung zu aktivieren, verwenden Sie kdbgctrl -e.

Wenn Sie die aktuelle Einstellung überprüfen und verwenden möchten, um die Ausführung innerhalb einer Batchdatei zu steuern, können Sie den Befehl kdbgctrl -cx verwenden. Ausführliche Informationen zu diesem Befehl finden Sie unter KDbgCtrl Command-Line Optionen.

Automatisches Kerneldebuggen

Wenn das vollständige Kerneldebuggen aktiviert ist, ist die aktuelle Einstellung für das automatische Kerneldebuggen unwesentlich – die gesamte Kommunikation ist zulässig.

Wenn das vollständige Kerneldebuggen deaktiviert und das automatische Kerneldebuggen aktiviert ist, kann nur der Zielcomputer eine Debugverbindung initiieren.

In diesem Fall führt nur eine Kernelmodus-Ausnahme, ein Breakpoint oder ein anderes Kernelmodusereignis dazu, dass eine Verbindung hergestellt wird. Die Verbindung wird nicht für DbgPrint-Ausgabe , Symbollademeldungen, umgeleitete Benutzermodusdebuggereingaben und -ausgaben oder andere ähnliche Nachrichten hergestellt. Diese werden im DbgPrint-Puffer gespeichert, anstatt an den Kerneldebugger gesendet zu werden.

Wenn eine Ausnahme oder ein Ereignis bewirkt, dass das Ziel in den Kerneldebugger einbricht, wird das vollständige Kerneldebuggen automatisch aktiviert, so als ob Sie kdbgctrl -e ausgeführt hätten.

Automatisches Kerneldebuggen ist standardmäßig deaktiviert (dies ist jedoch unwesentlich, es sei denn, das vollständige Kerneldebuggen ist ebenfalls deaktiviert). Um den aktuellen Einstellungswert zu überprüfen, verwenden Sie kdbgctrl -ca. Verwenden Sie zum Deaktivieren dieser Einstellung kdbgctrl -da. Um diese Einstellung zu aktivieren, verwenden Sie kdbgctrl -ea.

Fehlerbehandlung im Benutzermodus

Wenn User-Mode Fehlerbehandlung aktiviert ist, führen einige Benutzermodusereignisse dazu, dass der Zielcomputer in den Kerneldebugger einbricht.

Insbesondere führen alle int 3-Interrupts ( z. B. von einem Debugger in den Code eingefügte Haltepunkte oder Aufrufe von DbgBreakPoint ) zu einem Bruch im Kerneldebugger. Standardausnahmen wie Zugriffsverletzungen und Division durch Null werden jedoch in der Regel nicht an den Kerneldebugger gesendet.

Wenn bereits ein Benutzermodusdebugger an den Prozess angefügt ist, erfasst dieser Debugger alle Fehler im Benutzermodus, und der Kerneldebugger wird nicht geändert. Die Rangfolge der verschiedenen Fehlerhandler für den Benutzermodus finden Sie unter Aktivieren des Postmortemdebuggens.

Damit User-Mode Fehlerbehandlung funktioniert, muss entweder das vollständige Kerneldebuggen oder das automatische Kerneldebuggen aktiviert sein.

User-Mode Fehlerbehandlung ist standardmäßig aktiviert. Verwenden Sie kdbgctrl -cu, um den aktuellen Einstellungswert zu überprüfen. Verwenden Sie kdbgctrl -du, um diese Einstellung zu deaktivieren. Um diese Einstellung zu aktivieren, verwenden Sie kdbgctrl -eu.

Blockieren des Kerneldebuggens

In einigen Fällen können Sie den Zielcomputer für das Kerneldebuggen einrichten, aber warten Sie, bis das Kerneldebuggen aktiviert wird, bis der Zielcomputer gestartet wurde. Sie können dies tun, indem Sie das Kerneldebuggen blockieren.

Wichtig

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

Um das Kerneldebuggen zu blockieren, richten Sie den Zielcomputer mithilfe von Befehlen wie den folgenden ein:

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:32 /start DISABLE /noumex

Wenn Sie den Zielcomputer neu starten, wird er für das Kerneldebuggen vorbereitet, aber das Kerneldebuggen und User-Mode Fehlerbehandlung werden deaktiviert. An diesem Punkt kann ein Hostcomputer nicht an den Zielcomputer angefügt werden, Fehlerüberprüfungen werden nicht vom Kerneldebugger abgefangen, und Benutzermodusausnahmen führen nicht zu einer Unterbrechung des Kerneldebuggers.

Wenn Sie bereit sind, können Sie das Kerneldebuggen aktivieren (ohne den Zielcomputer neu zu starten), indem Sie die folgenden Befehle eingeben.

kdbgctrl -db
kdbgctrl -e

Später können Sie das Kerneldebuggen deaktivieren, indem Sie die folgenden Befehle eingeben.

kdbgctrl -d
kdbgctrl -eb

Sie können kdbgctrl -cb verwenden, um zu überprüfen, ob das Kerneldebuggen blockiert ist.

Die DbgPrint-Puffergröße

Der DbgPrint-Puffer speichert Nachrichten, die der Zielcomputer an den Kerneldebugger gesendet hat.

Wenn vollständiges Kerneldebuggen aktiviert ist, werden diese Meldungen automatisch im Kerneldebugger angezeigt. Wenn diese Option jedoch deaktiviert ist, werden diese Nachrichten im Puffer gespeichert. Zu einem späteren Zeitpunkt können Sie das Kerneldebuggen aktivieren, eine Verbindung mit einem Kerneldebugger herstellen und die Erweiterung !dbgprint verwenden, um den Inhalt dieses Puffers anzuzeigen. Weitere Informationen zu diesem Puffer finden Sie unter Der DbgPrint-Puffer.

Die Standardgröße des DbgPrint-Puffers beträgt 4 KB in einem kostenlosen Build von Windows. Verwenden Sie kdbgctrl -cdb, um die aktuelle Puffergröße zu bestimmen. Verwenden Sie zum Ändern der Puffergröße kdbgctrl -sdbSize, wobei Size die neue Puffergröße angibt. Syntaxdetails finden Sie unter KDbgCtrl Command-Line Optionen.

Beispiele

Verwenden Sie den folgenden Befehl, um alle aktuellen Einstellungen anzuzeigen:

kdbgctrl -c -ca -cu -cb -cdb 

Verwenden Sie den folgenden Befehl, um die Standardeinstellungen wiederherzustellen:

kdbgctrl -e -da -eu -db -sdb 0x1000 

Verwenden Sie den folgenden Befehl, um den Hostcomputer so zu sperren, dass er nur bei Ausnahmen kontaktiert wird:

kdbgctrl -d -ea -eu 

Verwenden Sie den folgenden Befehl, um das gesamte Kerneldebuggen zu deaktivieren:

kdbgctrl -d -da 

Wenn Sie das gesamte Kerneldebuggen deaktivieren, können Sie auch die Größe des DbgPrint-Puffers erhöhen. Dadurch wird sichergestellt, dass alle Nachrichten gespeichert werden, falls Sie sie später sehen müssen. Wenn Sie über ein Megabyte Arbeitsspeicher verfügen, können Sie den folgenden Befehl verwenden:

kdbgctrl -sdb 0x100000