通常我插入一个assert(0);
在我的C ++代码中,启动Windbg,按F5,inputk
然后得到一个堆栈跟踪。 然后我必须通过鼠标复制粘贴它并退出。
但是我想自动化这个。 有什么办法可以检索堆栈跟踪并将其写入文本文件,而无需手动使用GUI?
首先,你可以使用.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的符号服务器,重新加载,转储调用堆栈并退出并分离。
假设你没有试图进一步调试,只是试图获得堆栈跟踪,然后调用这个函数,并将输出写入文件。
CaptureStackBackTrace( http://msdn.microsoft.com/zh-cn/library/bb204633 ( VS.85 ) .aspx? ppud=4)