.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 命令(即使包含分号也是如此)。 不应将此行括在引号中。 .shell 和 ShellCommand 之间必须有一个空格(忽略其他前导空格)。
除非使用 -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