在退出 WinDbg 之前执行命令
Posted
技术标签:
【中文标题】在退出 WinDbg 之前执行命令【英文标题】:Execute commands before exiting WinDbg 【发布时间】: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。有趣的概念。 【参考方案1】:如果想法是记录所有已执行的命令及其结果。我认为你应该使用.logopen
唯一要注意的是,在开始调试之前,您必须提前提及此命令。否则将不会记录命令/结果。
【讨论】:
我通常已经使用.logopen
,但是在所有输出中都很难找到命令。以上是关于在退出 WinDbg 之前执行命令的主要内容,如果未能解决你的问题,请参考以下文章