目前我们用 MiniDumpNormal | 调用
标志。这对于调试配置中的内部构建工作得很好,但没有提供我们在发布配置中需要的信息。MiniDumpWriteDump
MiniDumpWithIndirectlyReferencedMemory
在 Release 中,minidump 数据包含足够的堆栈信息供调试器找出代码中发生故障的位置,但没有其他数据。我并不是简单地表示局部变量由于被优化而丢失,正如您在 Release 构建中所期望的那样——我的意思是,除了调用堆栈和当前代码行之外没有任何有用的东西。没有寄存器,没有局部变量,没有全局变量,没有局部变量指向的对象——什么都没有。我们甚至没有得到允许我们查看当前对象的“this”。这就是使用 MiniDumpWithIndirectlyReferencedMemory
的意义所在 - 它应该包含局部变量和堆栈变量引用的内存,但似乎没有。
我们应该使用什么标志?我们不想使用 MiniDumpWithFullMemory
并开始生成 600MB 以上的转储,但如果这意味着获得更多有用的数据,我们会很乐意将转储扩展到我们目前获得的 90KB 以上。或许我们应该使用 MiniDumpWithDataSegments
(全局)或...?
最佳答案
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
。
关于c++ - 我应该对 Minidumps 使用什么设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/284459/