2010-02-19 47 views
3

我一直在使用MiniDumpWriteDump在崩潰時生成轉儲文件。我一直在嘗試做一個完整的內存轉儲。這似乎工作,並按預期生成一個大文件。C++ MiniDumpWriteDump - FullMemoryDump不給我太多的信息

但是,當我將這個巨大的文件加載到Visual Studio(2005)中時,我似乎無法看到堆中的任何變量的值。實際上,它給我的信息不比普通的轉儲...

我對MiniDumpWriteDump的調用如下;

MINIDUMP_EXCEPTION_INFORMATION mdi; 

mdi.ThreadId = GetCurrentThreadId(); 
mdi.ExceptionPointers = in_pInfo; 
mdi.ClientPointers = FALSE; 

MiniDumpWriteDump(GetCurrentProcess(),GetCurrentProcessId(), 
    fHan, 
    MiniDumpWithFullMemory, 
    &mdi, 
    0, 
    0); 

注:我有全套PDB的,有效的堆棧,並在我的測試應用程序,我通過僞造零用除法錯誤。

任何想法,爲什麼這是?

乾杯 豐富

+0

你試過用WinDbg嗎?它在那裏工作嗎? – Andy 2010-02-19 12:49:15

+0

這有什麼? – 2013-04-29 06:08:15

回答

2

可能是因爲你沒有正確的.pdb文件。或者因爲您的代碼已經通過了優化器的RSA加密版本。或者因爲你已經有了指針在寄存器中傳遞的x64版本。或者因爲你的代碼因堆損壞而崩潰,使得調試信息同樣不可靠。或者碰撞線的堆疊被吹掉,不留下面包屑跟蹤。

請選擇。

+0

以及我正在測試應用程序,所以我僞造了一個除零。堆棧是完好無損的,pdb的所有加載和正確。但是我看不到任何堆或全局變量的值。 – Rich 2010-02-19 13:48:55

+1

用這樣的關鍵信息更新你的問題。不預先告知這只是浪費每個人的時間。您還需要準確記錄您使用的MiniDumpWriteDump()標誌以及「看不見」的含義。 – 2010-02-19 13:59:13

+0

問題已更新。 – Rich 2010-02-19 14:03:33