【发布时间】:2010-09-22 00:25:49
【问题描述】:
目前我们使用MiniDumpNormal | MiniDumpWithIndirectlyReferencedMemory 标志调用MiniDumpWriteDump。这适用于 Debug 配置中的内部构建,但没有提供我们在 Release 配置中所需的那么多信息。
在 Release 中,minidump 数据包含足够的堆栈信息,以便调试器找出代码中发生故障的位置,但没有其他数据。我不仅仅意味着由于优化而丢失了局部变量,正如您在发布版本中所期望的那样 - 我的意思是,除了调用堆栈和当前代码行之外,没有任何用处。没有寄存器,没有局部变量,没有全局变量,没有局部变量指向的对象——什么都没有。我们甚至没有得到允许我们查看当前对象的“this”。这就是使用MiniDumpWithIndirectlyReferencedMemory 的意义所在——它应该包含本地变量和堆栈变量引用的内存,但似乎没有。
我们应该改用什么标志?我们不想使用 MiniDumpWithFullMemory 并开始生成 600MB 以上的转储,但如果这意味着获得更多有用的数据,我们会很乐意将转储扩展至超出我们目前获得的 90KB。也许我们应该使用MiniDumpWithDataSegments (globals) 或者...?
【问题讨论】:
-
发生了什么样的异常导致程序崩溃?