7

目前我们MiniDumpWriteDumpMiniDumpNormal | MiniDumpWithIndirectlyReferencedMemory旗帜打电话。这适用于 Debug 配置中的内部构建,但没有提供我们在 Release 配置中所需的那么多信息。

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

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

4

1 回答 1

0

WinDbg 对 a 使用以下标志.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

我建议你替换MiniDumpWithFullMemoryMiniDumpWithIndirectlyReferencedMemory.

于 2015-10-14T22:40:36.453 回答