我想在Windows MFC 8.0應用程序(發佈版本)中發現內存泄漏。如何在MFC 8.0應用程序中訪問malloc的完整堆棧跟蹤?
未能到場使用WinDbg的(或UMDH)由於VC8 CRT's malloc problem with FPO分配的完整堆棧跟蹤後,我試圖以應用解決方案提出here(即使用LeakDiag與DbgHlp StackWalk啓用)才知道原來LeakDiag做在監視C運行時分配器時,不會生成日誌文件,但是,在監視它的Windows堆分配器時,它確實起作用,但同樣,堆跟蹤在malloc調用中結束。
符號配置正確,因爲我可以在生成的文件中看到函數名稱,文件名,行等。
有誰知道我爲什麼不能登錄C Runtime Allocator?以及爲什麼即使使用DbgHlp StackWalk API我也無法獲得完整的堆棧跟蹤?
我會很感激您可以提供的任何提示。
其他信息:
如何我堆棧跟蹤看起來像:
我有了這個使用WinDbg的。地址是由heap -l報告的一個泄漏塊。
0:000> !heap -p -a 25b18400
address 25b18400 found in
_HEAP @ 2a70000
HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
25b183f8 0008 0000 [07] 25b18400 00021 - (busy)
Trace: 00a4
7c97d6dc ntdll!RtlDebugAllocateHeap+0x000000e1
7c959d18 ntdll!RtlAllocateHeapSlowly+0x00000044
7c92b298 ntdll!RtlAllocateHeap+0x00000e64
78134d83 MSVCR80!malloc+0x0000007a
我已經嘗試過英特爾並行工作室,但它只是掛起...它似乎很沉重,所以是我的應用程序... 除此之外,我正在尋找的內存泄漏只發生在一個生產電腦缺乏任何開發工具。我可以安裝一個編譯器,但爲什麼IPS甚至不能在我的開發機器上啓動呢? 我會看看你提到的其他工具。 謝謝你的回答! – 2009-08-06 12:07:03