windbg 调试器简明手册——第 3 章——使用shell命令

目录

1.  使用 Shell 命令

1.1  Shell 命令语法

1.1.1  参数说明

1.1.2  使用环境

1.1.3  评注

2.  网络驱动器控制


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 的任何计算机上生效。(译注:不同的版本菜单位置可能有差异。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值