【问题标题】:What settings should I be using with Minidumps?我应该对 Minidumps 使用哪些设置?
【发布时间】:2010-09-22 00:25:49
【问题描述】:

目前我们使用MiniDumpNormal | MiniDumpWithIndirectlyReferencedMemory 标志调用MiniDumpWriteDump。这适用于 Debug 配置中的内部构建,但没有提供我们在 Release 配置中所需的那么多信息。

在 Release 中,minidump 数据包含足够的堆栈信息,以便调试器找出代码中发生故障的位置,但没有其他数据。我不仅仅意味着由于优化而丢失了局部变量,正如您在发布版本中所期望的那样 - 我的意思是,除了调用堆栈和当前代码行之外,没有任何用处。没有寄存器,没有局部变量,没有全局变量,没有局部变量指向的对象——什么都没有。我们甚至没有得到允许我们查看当前对象的“this”。这就是使用MiniDumpWithIndirectlyReferencedMemory 的意义所在——它应该包含本地变量和堆栈变量引用的内存,但似乎没有。

我们应该改用什么标志?我们不想使用 MiniDumpWithFullMemory 并开始生成 600MB 以上的转储,但如果这意味着获得更多有用的数据,我们会很乐意将转储扩展至超出我们目前获得的 90KB。也许我们应该使用MiniDumpWithDataSegments (globals) 或者...?

【问题讨论】:

  • 发生了什么样的异常导致程序崩溃?

标签: c++ release minidump


【解决方案1】:

WinDbg 对.dump /ma 使用以下标志:

0:003> .dumpdebug
----- User Mini Dump Analysis

MINIDUMP_HEADER:
Version         A793 (62F0)
NumberOfStreams 13
Flags           41826
                0002 MiniDumpWithFullMemory
                0004 MiniDumpWithHandleData
                0020 MiniDumpWithUnloadedModules
                0800 MiniDumpWithFullMemoryInfo
                1000 MiniDumpWithThreadInfo
                40000 MiniDumpWithTokenInformation

我建议您将MiniDumpWithFullMemory 替换为MiniDumpWithIndirectlyReferencedMemory

【讨论】:

  • 标志是version specific。确保您拥有支持该标志的新版本 dbghelp.dll
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
  • 2017-08-11
  • 1970-01-01
相关资源
最近更新 更多