.shell(命令 Shell)

.shell 命令启动 shell 进程,并将其输出重定向到调试器或指定文件。

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

参数

InFile
指定要用于输入的文件的路径和文件名。 如果打算在初始命令后不提供任何输入,则可以指定单个连字符 (-) 来取代 InFile,并且在连字符之前没有空格。

OutFile
指定要用于标准输出的文件的路径和文件名。 如果 -o **** OutFile 被省略,会将输出发送到“调试器命令”窗口。 如果不希望在文件中显示或保存此输出,可以指定单个连字符 (-) 来取代 OutFile,并且连字符前没有空格。

ErrFile
指定要用于错误输出的文件的路径和文件名。 如果 -e ErrFile 被省略,会将错误输出发送到与标准输出相同的位置。 如果不希望在文件中显示或保存此输出,可以指定单个连字符 (-) 来取代 ErrFile,并且连字符前没有空格。

Options 可以是以下任意数量的选项:

-ci "Commands"
处理指定的调试器命令,然后将输出作为输入文件传递到正在启动的进程。 Commands 可以是任意数量的调试器命令,用分号分隔,用引号括起来。

-x
促使将要生成的任何进程与调试器完全分离。 这样,就可以创建即使在调试会话结束之后也会继续运行的进程。

ShellCommand
指定要执行的应用程序命令行或 Microsoft MS-DOS 命令。

环境

说明
模式 用户模式、内核模式
目标 实时、崩溃转储
平台 全部

其他信息

有关访问命令行界面的其他方法,请参阅使用 Shell 命令

注解

将用户模式调试器的输出重定向到内核调试器时,不支持 .shell 命令。 有关将输出重定向到内核调试器(有时称为基于 KD 的 NTSD)的详细信息,请参阅从内核调试器控制用户模式调试器

.shell 命令后面的整行将被解释为 Windows 命令(即使包含分号也是如此)。 不应将此行括在引号中。 .shellShellCommand 之间必须有一个空格(忽略其他前导空格)。

除非使用 -o **** OutFile 参数,否则将在“调试器命令”窗口中显示命令的输出。

发出不带参数的 .shell 命令时,将激活 shell 并将其保持打开状态。 所有后续命令都将被解释为 Windows 命令。 在此期间,调试器将显示读取 <.shell 进程的消息可能需要输入>,WinDbg 提示符将被替换为 Input> 提示符。 有时,当调试器离开 shell 时,将显示单独的命令提示符窗口。 应忽略此窗口;所有输入和输出都将通过“调试器命令”窗口完成。

若要关闭此 shell 并返回到调试器本身,请键入 exit.shell_quit。 (.shell_quit 命令更强大,因为它即使在壳被冻结时也能正常工作。)

调试 CSRSS 时不能使用此命令,因为如果没有 CSRSS 处于活动状态,则无法创建新进程。

可以使用 -ci 标志运行一个或多个调试器命令,然后将其输出传递给 shell 进程。 例如,可以使用以下命令将 !process 0 7 命令的输出传递到 Perl 脚本:

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