次の方法で共有


.shell (コマンド シェル)

.shell コマンドは、シェル プロセスを起動し、その出力をデバッガーまたは指定されたファイルにリダイレクトします。

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

パラメーター

InFile
入力に使用するファイルのパスとファイル名を指定します。 最初のコマンドの後に入力を提供しない場合は InFile の代わりにハイフン (-) を 1 つ指定できます。ハイフンの前にスペースは不要です。

OutFile
標準出力に使用するファイルのパスとファイル名を指定します。 -o **** OutFile を省略すると、デバッガー コマンド ウィンドウに出力が送信されます。 この出力をファイルに表示または保存しない場合 OutFile の代わりにハイフン (-) を 1 つ指定できます。ハイフンの前にスペースは不要です。

ErrFile
エラー出力に使用するファイルのパスとファイル名を指定します。 -e ErrFile を省略した場合、エラー出力は標準出力と同じ場所に送信されます。 この出力がファイルに表示されたり保存されたりするのが望ましくない場合は ErrFile の代わりにハイフン (-) を 1 つ指定できます。ハイフンの前にスペースは不要です。

Options は次のオプションをいくつでも指定できます。

-ci "Commands"
指定したデバッガー コマンドを処理し、その出力を入力ファイルとして起動中のプロセスに渡します。 Commands には、任意の数のデバッガー コマンドをセミコロンで区切り、引用符で囲って指定できます。

-x
生成されるプロセスがデバッガーから完全にデタッチされるようにします。 これにより、デバッグ セッションの終了後も実行を継続するプロセスを作成できます。

ShellCommand
実行するアプリケーション コマンド ラインまたは Microsoft MS-DOS コマンドを指定します。

Environment

項目 説明
モード ユーザー モード、カーネル モード
対象 ライブ、クラッシュ ダンプ
プラットフォーム すべて

追加情報

コマンド シェルにアクセスするその他の方法については、「シェル コマンドの使用」を参照してください。

解説

ユーザー モード デバッガーの出力がカーネル デバッガーにリダイレクトされる場合 .shell コマンドはサポートされません。 出力をカーネル デバッガーにリダイレクトする方法 (NTSD over KD と呼ばれることもあります) の詳細については、「カーネル デバッガーからのユーザー モード デバッガーの制御」を参照してください。

.shell コマンドに続く行全体は、Windows コマンドとして解釈されます (セミコロンが含まれている場合でも同様)。 この行は引用符で囲む必要はありません。 .shellShellCommand の間にはスペースが必要です (先頭に追加されたスペースは無視されます)。

コマンドからの出力は -o **** OutFile パラメーターが使用されていない限り、デバッガー コマンド ウィンドウに表示されます。

パラメーターなしで .shell コマンドを発行すると、シェルがアクティブになり、開いたままになります。 以降のすべてのコマンドは、Windows コマンドとして解釈されます。 この間、デバッガーは <.shell process may need input> というメッセージを表示し、WinDbg プロンプトは Input> プロンプトに置き換わります。 デバッガーによってシェルが開いた状態になっているときは、別のコマンド プロンプト ウィンドウが表示されることがあります。 このウィンドウは無視してください。すべての入力と出力は、デバッガー コマンド ウィンドウで実行されます。

このシェルを閉じてデバッガー自体に戻すには「exit」または「.shell_quit」と入力します。 (.shell_quit コマンドは、シェルがフリーズした場合でも機能するため、より強力です)。

CSRSS をアクティブにしないと新しいプロセスを作成できないため、CSRSS のデバッグ中にこのコマンドを使用することはできません。

-ci フラグを使用して、1 つ以上のデバッガー コマンドを実行し、その出力をシェル プロセスに渡すことができます。 たとえば、次のコマンドを使用して !process 0 7 コマンドの出力を Perl スクリプトに渡すことができます。

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