使用StackWalk64减少堆栈

时间:2013-07-29 09:04:35

标签: windows stack trace dbghelp

我构建了test.exe,它会崩溃并使用MinidumpWriteDump生成.dmp文件,而parser.exe用于从该dmp文件中读取和打印信息。

在parser.exe中,我使用StackWalk64获取该dmp文件中所有线程的所有堆栈跟踪。 但现在我发现我只能获得比视觉工作室更少的堆栈。

我已经尝试过在google,stackoverflow,codeproject中找到的所有解决方案,没有任何改变。

以下是parser.exe的作用:

  1. SymInitialize
  2. MiniDumpReadDumpStream读取所有信息
  3. SymLoadModuleEx& SymFindFileInPath加载.dmp文件中指定的pdb / exe / dll
  4. 初始化STACKFRAME64并循环调用StackWalk64。
  5. 我想知道如何获得与visual studio相同的堆栈数。 如果需要,我可以在这里粘贴更多代码。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

StackWalk64不够强大,无法跟踪完整的堆栈跟踪,尤其是通过已优化的帧。 (例如,请参阅此stackoverflow问题here)。

最好的方法是实际使用WinDbg提供的调试引擎。以下是一些博客文章,介绍如何使用调试引擎API: