2008-11-12 50 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

相關問題