.shell (Command Shell)

Der .shell-Befehl startet einen Shellprozess und leitet seine Ausgabe an den Debugger oder an eine angegebene Datei weiter.

.shell [Options] [ShellCommand] 
.shell -i InFile [-o OutFile [-e ErrFile]] [Options] ShellCommand

Parameter

InFile
Gibt den Pfad und den Dateinamen einer Datei an, die für die Eingabe verwendet werden soll. Wenn Sie nach dem ersten Befehl keine Eingaben anbieten möchten, können Sie einen einzelnen Bindestrich (-) anstelle von InFile ohne Leerzeichen vor dem Bindestrich angeben.

OutFile
Gibt den Pfad und Dateinamen einer Datei an, die für die Standardausgabe verwendet werden soll. Wenn -o **** OutFile nicht angegeben wird, wird die Ausgabe an das Debugger-Befehlsfenster gesendet. Wenn diese Ausgabe nicht in einer Datei angezeigt oder gespeichert werden soll, können Sie einen einzelnen Bindestrich (-) anstelle von OutFile ohne Leerzeichen vor dem Bindestrich angeben.

ErrFile
Gibt den Pfad und Dateinamen einer Datei an, die für die Fehlerausgabe verwendet werden soll. Wenn -e ErrFile ausgelassen wird, wird die Fehlerausgabe an dieselbe Stelle wie die Standardausgabe gesendet. Wenn diese Ausgabe nicht in einer Datei angezeigt oder gespeichert werden soll, können Sie einen einzelnen Bindestrich (-) anstelle von ErrFile ohne Leerzeichen vor dem Bindestrich angeben.

Options Kann eine beliebige Anzahl der folgenden Optionen sein:

-ci "-Befehle"
Verarbeitet die angegebenen Debuggerbefehle und übergibt dann die Ausgabe als Eingabedatei an den gestarteten Prozess. Commands können eine beliebige Anzahl von Debugger-Befehlen sein, die durch Semikolons getrennt und in Anführungszeichen eingeschlossen sind.

-x
Bewirkt, dass ein Prozess vollständig vom Debugger getrennt wird. Auf diese Weise können Sie Prozesse erstellen, die auch nach Beendigung der Debugsitzung weiter ausgeführt werden.

ShellCommand
Gibt die auszuführende Anwendungsbefehlszeile oder den Microsoft MS-DOS-Befehl an.

Environment

Artikel Beschreibung
Modi Benutzermodus, Kernel-Modus
Targets Live, Crash Dump
Plattformen Alle

Zusätzliche Informationen

Weitere Möglichkeiten für den Zugriff auf die Befehlsshell finden Sie unter Verwenden von Shellbefehlen.

Hinweise

Der .shell-Befehl wird nicht unterstützt, wenn die Ausgabe eines Benutzermodusdebuggers an den Kerneldebugger umgeleitet wird. Weitere Informationen zum Umleiten der Ausgabe an den Kerneldebugger (manchmal als NTSD über KD bezeichnet) finden Sie unter Steuern des Benutzermodusdebuggers über den Kerneldebugger.

Die gesamte Zeile nach dem .shell-Befehl wird als Windows-Befehl interpretiert (auch wenn sie ein Semikolon enthält). Diese Zeile sollte nicht in Anführungszeichen eingeschlossen werden. Es muss ein Leerzeichen zwischen .shell und ShellCommand vorhanden sein (zusätzliche führende Leerzeichen werden ignoriert).

Die Ausgabe des Befehls wird im Debugger-Befehlsfenster angezeigt, es sei denn, der Parameter -o **** OutFile wird verwendet.

Wenn Sie einen .shell-Befehl ohne Parameter ausgeben, wird die Shell aktiviert und geöffnet. Alle nachfolgenden Befehle werden als Windows-Befehle interpretiert. Während dieser Zeit zeigt der Debugger Meldungen wie <.shell process may need input> an, und die WinDbg-Eingabeaufforderung wird durch eine Input>-Aufforderung ersetzt. Manchmal wird ein separates Eingabeaufforderungsfenster angezeigt, wenn der Debugger die Shell geöffnet lässt. Dieses Fenster sollte ignoriert werden. Alle Eingaben und Ausgaben werden über das Debugger-Befehlsfenster ausgeführt.

Um diese Shell zu schließen und zum Debugger selbst zurückzukehren, geben Sie exit oder .shell_quit ein. (Der Befehl .shell_quit ist leistungsstärker, da er auch dann funktioniert, wenn die Shell fixiert ist.)

Dieser Befehl kann beim Debuggen von CSRSS nicht verwendet werden, da neue Prozesse nicht erstellt werden können, ohne dass CSRSS aktiv ist.

Sie können das Flag -ci verwenden, um einen oder mehrere Debuggerbefehle auszuführen und dann die Ausgabe an einen Shellprozess zu übergeben. Sie können beispielsweise die Ausgabe des Befehls !process 0 7 mithilfe des folgenden Befehls an ein Perl-Skript übergeben:

0:000> .shell -ci "!process 0 7" perl.exe parsemyoutput.pl