【问题标题】:less stacks using StackWalk64使用 StackWalk64 减少堆栈
【发布时间】:2013-07-29 09:04:35
【问题描述】:

我构建了 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。

我想知道如何获得与 Visual Studio 相同的堆栈数。 如果需要,我可以在此处粘贴更多代码。 任何帮助将不胜感激。

【问题讨论】:

    标签: windows stack trace dbghelp


    【解决方案1】:

    StackWalk64 不够健壮,无法跟踪完整的堆栈跟踪,尤其是经过优化的帧。 (例如,请参阅这个 stackoverflow 问题here)。

    最好的方法是实际使用WinDbg 提供的调试引擎。这里有几篇博文展示了如何使用调试引擎 API:

    【讨论】:

    • 谢谢,有用的提示。
    猜你喜欢
    • 2017-04-09
    • 2020-04-24
    • 2012-10-20
    • 2019-02-19
    • 2011-08-04
    • 2019-11-23
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多