大佬教程收集整理的这篇文章主要介绍了windows – 调查内存泄漏,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
>在GFlags中启用用户模式堆栈跟踪数据库
>在Windbg中,键入以下命令:!heap -stat -h 1250000(其中1250000是具有泄漏的堆的地址)
在比较多个转储之后,我看到大小为0xC的内存块随着时间的推移而增加,并且可能是泄漏的内存.
>输入以下命令:!heap -flt s c
给UserPtr这些分配,最后:
>输入!其中一些地址的堆-p -a地址始终显示以下分配调用堆栈:
0:000> !heap -p -a 10576ef8
address 10576ef8 found in _HEAP @ 1250000 HEAP_ENTRY Size Prev Flags UserPtr UserSize - state 10576ed0 000a 0000 [03] 10576ef8 0000c - (busy) mscoreei!CLRRuntimeInfoImpl::`vftable' 7c94b244 ntdll!RtlAllocateHeapSlowly+0x00000044 7c919c0c ntdll!RtlAllocateHeap+0x00000e64 603b14a4 mscoreei!UtilExecutionEngine::ClrHeapAlloc+0x00000014 603b14cb mscoreei!ClrHeapAlloc+0x00000023 603b14f7 mscoreei!ClrAlLocinProcessHeapBootstrap+0x0000002e 603b1614 mscoreei!operator new[]+0x0000002b 603d402b +0x0000005f 603d5142 mscoreei!GetThunkUseState+0x00000025 603d6fe8 mscoreei!_CorDllMain+0x00000056 79015012 mscoree!ShellShim__CorDllMain+0x000000ad 7c90118a ntdll!LdrpCallInitRoutine+0x00000014 7c919a6d ntdll!LdrpInitializeThread+0x000000c0 7c9198e6 ntdll!_LdrpInitialize+0x00000219 7c90e457 ntdll!KiUserApcDispatcher+0x00000007
这看起来像线程初始化调用堆栈,但我需要知道更多.
为了确保泄漏的确切原因,您建议采取的下一步措施是什么?
$$Display stack if heap handle eq 0x00310000 and size is 0x1303 $$==================================================================== bp ntdll!RtlAllocateHeap "j ((poi(@esp+4) = 0x00310000) & (poi(@esp+c) = 0x1303) )'k';'gc'"
也许你会为罪犯获得另一个筹码和其他想法.
以上是大佬教程为你收集整理的windows – 调查内存泄漏全部内容,希望文章能够帮你解决windows – 调查内存泄漏所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。