.ocommand 命令使目标应用程序能够向调试器发送命令。
.ocommand String
.ocommand -d
.ocommand
参数
字符串
指定命令前缀字符串。 String 可以包含空格,但不能使用 C 样式控制字符,如 \" 和 \n。 还可以用引号将 String 括起来。 但是,如果 String 包含分号、前导空格或尾随空格,则必须将 String 括在引号中。
-d
删除命令前缀字符串。
环境
项 | 说明 |
---|---|
模式 | 仅限用户模式 |
目标 | 仅限实时调试 |
平台 | 全部 |
其他信息
有关 OutputDebugString 和其他与调试器通信的用户模式函数的详细信息,请参阅 Microsoft Windows SDK 文档。
注解
如果使用不带参数的 .ocommand 命令,调试器将显示当前的命令前缀字符串。 若要清除现有字符串,请使用 .ocommand -d。
设置命令前缀字符串后,将扫描任何目标输出(例如,OutputDebugString 命令的内容)。 如果此输出以命令前缀字符串开头,则前缀字符串后面的输出文本将被视为调试器命令字符串并运行。 执行此文本时,不会显示命令字符串。
如果需要其他消息,目标可以在输出字符串中包含 .echo(回显注释)命令。 不以前缀字符串开头的目标输出以典型方式显示。
执行命令字符串中的命令后,除非最终命令为 g (Go).,否则目标仍会中断到调试器中。
命令前缀字符串与目标输出之间的比较不区分大小写。 (但是,后续使用 .ocommand 将显示输入的字符串,并保留大小写)。
对于本例,假设在调试器中输入了以下命令。
0:000> .ocommand magiccommand
然后,目标应用程序将执行以下行。
OutputDebugString("MagicCommand kb;g");
调试器识别命令字符串前缀,并立即执行 kb;g。
但是,以下行不会触发执行任何命令。
OutputDebugString("Command on next line.\nmagiccommand kb;g");
前面的示例中没有执行任何命令,因为命令字符串前缀不在输出的开头,即使它确实以新行开头。
注意 应选择一个命令字符串前缀,该前缀不太可能出现在除你自己的命令之外的任何目标输出中。