我想在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