2

通常我在我的 C++ 代码中插入一个assert(0);,启动 Windbg,按 F5,回车k,我得到一个堆栈跟踪。然后我必须通过鼠标复制粘贴它并退出。

但我想自动化这个。有什么方法可以检索堆栈跟踪并将其写入文本文件而无需手动使用 GUI?

4

2 回答 2

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 的符号服务器,重新加载,转储调用堆栈并退出和分离。

于 2013-02-22T20:42:09.780 回答
0

假设您不再尝试进一步调试它,而只是尝试获取堆栈跟踪,那么只需调用此函数并将输出写入文件。

CaptureStackBackTrace ( http://msdn.microsoft.com/en-us/library/bb204633(VS.85).aspx?ppud=4 )

于 2013-02-26T19:28:24.280 回答