2008-11-12 86 views
7

当前我们呼叫MiniDumpWriteDumpMiniDumpNormal | MiniDumpWithIndirectlyReferencedMemory标志。这对Debug配置中的内部构建来说很好,但在Release配置中没有提供足够的信息。Minidumps应该使用什么设置?

在发行版中,小型转储数据包含足够的堆栈信息,供调试器计算故障发生代码的位置,但没有其他数据。我不是简单的意思是因为被优化而丢失局部变量,就像你期望在Release版本中所期望的那样 - 我的意思是除了调用堆栈和当前代码行之外没有任何用处。没有寄存器,没有本地人,没有全局变量,没有本地人指向的对象 - 什么也没有。我们甚至没有得到“这个”,这将允许我们查看当前的对象。这是使用MiniDumpWithIndirectlyReferencedMemory的要点 - 它应该包含由本地和堆栈变量引用的内存,但似乎没有。

我们应该使用什么样的标志?我们不想使用MiniDumpWithFullMemory并开始生成600MB +转储,但是如果它意味着获得更多有用的数据,它将会愉快地将转储扩展到超出我们目前获得的90KB。也许我们应该使用MiniDumpWithDataSegments(全局变量)或...?

+0

发生什么样的异常会导致程序崩溃? – HelloWorld 2015-10-01 13:47:56

回答

0

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 

我建议你MiniDumpWithIndirectlyReferencedMemory更换MiniDumpWithFullMemory

+0

这些标志是[特定版本](https://msdn.microsoft.com/en-us/library/windows/desktop/ms680519%28v=vs.85%29.aspx)。确保你有一个支持该标志的新版本的dbghelp.dll – 2015-10-14 22:42:31

相关问题