通常我在我的C ++代码中插入一个assert(0);
,启动Windbg,按F5,输入k
然后我得到一个堆栈跟踪。然后我必须通过鼠标复制粘贴并退出。
但我想自动化这个。有没有办法可以检索堆栈跟踪并将其写入文本文件而无需手动使用GUI?
答案 0 :(得分:2)
首先,您可以使用.logopen
将gui的输出写入文本文件,如此
.logopen c:\dump\myLog.txt
这会将所有内容转储到此位置,请拨打.logclose
以关闭日志,以便在一行中显示:
.logopen c:\dump\myLog.txt; k; .logclose
其次如果你真的不想使用gui,那就是windbg,cdb的命令行版本。您可以使用如下命令执行此操作:
cdb -log c:\data\myLog.txt -lines -pn myApp.exe -c ".symfix;.reload;k;qd"
这将打开调用堆栈的行号,输出到日志,使用名称附加到您的进程,然后用双引号解释命令,修复MS的符号服务器,重新加载,转储调用堆栈并退出和分离。
答案 1 :(得分:0)
假设您没有尝试进一步调试它,只是尝试获取堆栈跟踪,那么只需调用此函数并将输出写入文件。
CaptureStackBackTrace(http://msdn.microsoft.com/en-us/library/bb204633(VS.85).aspx?ppud=4)