【发布时间】:2014-01-08 07:48:41
【问题描述】:
有没有办法在 WinDbg 退出之前执行命令?
我特别想做一个.write_cmd_hist <filename> 来保存我在调试会话期间使用的所有命令,这样我就可以更容易地记住我做了什么,以防有人问我是如何进行分析的。
方法 1
我尝试重新定义q命令,但是下面的不行,当然只有WinDbg没有被菜单关闭才行:
aS q ".write_cmd_hist c:\hist.txt; q" 再次尝试替换 q。
aS q ".write_cmd_hist c:\hist.txt; qq" 在执行q 时出现语法错误。反斜杠丢失了。
aS q ".write_cmd_hist c:\\hist.txt; qq" 在执行q 时出现语法错误。
aS q ".block{.write_cmd_hist c:\hist.txt; qq}" 反斜杠丢失了
aS q ".block{.write_cmd_hist c:\\hist.txt; qq}" 在执行q 时出现语法错误。
aS q ".block{.write_cmd_hist "c:\\hist.txt"; qq}" 是格式错误的字符串
aS q ".block{.write_cmd_hist \"c:\\hist.txt\"; qq}" 给出语法错误。 .write_cmd_hist 不喜欢引号。
aS q ".block{.block{.write_cmd_hist c:\\hist.txt};qq}" 在执行q 时出现语法错误。
更新
看起来像 .write_cmd_hist cannot be used in aliases (MSDN) 和 cannot be used in scripts (MSDN)。这也适用于该文章中提到的其他命令,例如
aS ccc .cls
现在做ccc的时候,也显示语法错误。
在退出 WinDbg 时还有其他方法可以执行脚本吗?
【问题讨论】:
-
.write_cmd_hist 是在windbg.exe 中实现的命令,不在调试引擎中,所以不能给它起别名,也不能在脚本中使用。我有类似的要求,并在 windbg 中挂钩 AddCommand 方法并将每个输入命令记录到日志文件中,启动 windbg 还将先前日志文件中的命令添加到命令历史记录中。希望这将得到官方支持。
-
@Thomson:这听起来更像是在调试 WinDbg。有趣的概念。
标签: windbg