在退出 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 之前执行命令的主要内容,如果未能解决你的问题,请参考以下文章

nohup命令执行退出后进程退出

nohup命令执行推出后进程退出

执行yum相关命令总是卡住,ctrl+c也退出不了

Windbg常用命令系列---!stl

Windbg常用命令系列---!stl

如何手工抓取dump文件