目录
1. 使用 Shell 命令
调试器可以将某些命令发送到它运行所在的 Microsoft Windows 环境。
可以在任何 Windows 调试器中使用 `.shell`( shell 命令)命令。通过此命令,可以直接从调试器执行应用程序或 Microsoft MS-DOS 命令。如果你执行远程调试,这些 shell 命令将在远端服务器上执行。
`.noshell`(禁止 shell 命令)命令或 `-noshell` 命令行选项会禁用所有 shell 命令。即使你启动新的调试会话,这些命令在调试器运行时也会被禁用。即使你在 KD 中发出 `.restart`(重启内核连接)命令,这些命令仍然保持禁用状态。
如果你正在运行调试服务器,则可能需要禁用 shell 命令。如果 shell 可用,则远程连接可以使用 `.shell` 命令来更改你的计算机。
1.1 Shell 命令语法
.shell 命令启动一个 shell 进程,并将其输出重定向到调试器或指定的文件。
.shell [Options] [ShellCommand]
.shell -i InFile [-o OutFile [-e ErrFile]] [Options] ShellCommand
1.1.1 参数说明
(1) InFile
指定要用作输入的文件的路径和文件名。如果你打算在初始命令之后不再提供任何输入,则可以用单个连字符 (-) 代替 InFile,连字符前不要有空格。
(2) OutFile
指定用于标准输出的文件路径和文件名。如果省略 `-o **** OutFile`,则输出将发送到调试器命令窗口。如果你不希望显示此输出或将其保存到文件中,则可以指定一个连字符 (-) 代替 `OutFile`,连字符前不要有空格。
(3) ErrFile
指定用于错误输出的文件路径和文件名。如果省略 `-e ErrFile`,则错误输出将发送到与标准输出相同的位置。如果你不希望此输出显示或保存到文件中,则可以指定一个连字符 (-) 代替 `ErrFile`,连字符前不要有空格。
(4) Options
可以是以下任意数量的选项:
-ci "Commands"
处理指定的调试器命令,然后将其输出作为输入文件传递给要启动的进程。命令可以是任意数量的调试器命令,命令之间用分号分隔,并用引号括起来。
-x
使所有新生成的进程与调试器完全分离。这样,即使调试会话结束,你也可以创建继续运行的进程。
ShellCommand
指定要执行的应用程序命令行或 Microsoft MS-DOS 命令。
1.1.2 使用环境
| 项 | 说明 |
| 模式 | 用户模式,内核模式 |
| 目标 | 实时调试,崩溃转储 |
| 平台 | 所有 |
1.1.3 评注
当用户模式调试器的输出重定向到内核调试器时,不支持 `.shell` 命令。有关将输出重定向到内核调试器(有时称为通过 KD 进行 NTSD 调试)的更多信息,请参阅“从内核调试器控制用户模式调试器”。
`.shell` 命令之后的整行将解释为 Windows 命令(即使包含分号)。此行不应包含在引号中。`.shell` 和 `ShellCommand` 之间必须有一个空格(额外的前导空格将忽略)。
除非使用 `-o **** OutFile` 参数,否则命令的输出将显示在调试器命令窗口中。
发出不带任何参数的 `.shell` 命令将激活 shell 并使其保持打开状态。所有后续命令都将被解释为 Windows 命令。在此期间,调试器将显示消息“`.shell` 进程可能需要输入”,并且 WinDbg 提示符将被替换为“输入”提示符。有时,当调试器保持 shell 开启时,会弹出一个单独的命令提示符窗口。此窗口应忽略;所有输入和输出都将通过调试器命令窗口完成。
要关闭此 shell 并返回到调试器本身,请键入 exit 或 .shell_quit。( .shell_quit 命令功能更强大,即使 shell 冻结也能正常工作。)
调试 CSRSS 时不能使用此命令,因为 CSRSS 未激活时无法创建新进程。
你可以使用 -ci 标志运行一个或多个调试器命令,然后将其输出传递给 shell 进程。例如,你可以使用以下命令将 !process 0 7 命令的输出传递给 Perl 脚本:
0:000> .shell -ci "!process 0 7" perl.exe parsemyoutput.pl
2. 网络驱动器控制
在 WinDbg 中,你可以使用“文件”|“映射网络驱动器”和“文件”|“断开网络驱动器”命令来控制网络驱动器映射。这些更改始终在运行 WinDbg 的计算机上生效,而不会在远程连接到 WinDbg 的任何计算机上生效。(译注:不同的版本菜单位置可能有差异。)

467

被折叠的 条评论
为什么被折叠?



