Расследование утечки памяти
Я исследую память приложения, работающего на 32-битной Win 7, созданной в смешанном режиме (VC++ и C#.net).
Я уже прошел следующие шаги, пытаясь проанализировать причину утечки:
включена база данных трассировки стека в GFlags
с помощью UMDH.exe я запустил разницу между двумя снимками, и я вижу, что наибольшее выделение памяти
+ 243040 ( 15884374 - 15641334) 872075 allocs BackTrace17A3C8 + 243026 ( 872075 - 629049) BackTrace17A3C8 allocations ntdll!RtlAllocateHeap+00000274
Он содержит только одну строку без стека вызовов. что меня смущает.
Дальнейший анализ с использованием Windbg:
В Windbg введите следующую команду:
!heap -stat -h 02150000
(где 2150000 - это адрес кучи, в которой есть утечка). После сравнения нескольких дампов я вижу, что блоки памяти размера 1 со временем увеличиваются и, вероятно, являются утечкой памяти.набрав следующую команду:
!heap -flt s 1
дает UserPtr этих распределений и, наконец,типирование
!heap -p -a address
на некоторых из этих адресов всегда отображается следующий стек вызовов выделения:address 0813fe08 found in _HEAP @ 2150000 HEAP_ENTRY Size Prev Flags UserPtr UserSize - state 0813fdf0 0004 0000 [00] 0813fe08 00001 - (busy) 76ecd84c ntdll!RtlAllocateHeap+0x00000274
что соответствует анализу UMDH. И здесь я тоже не вижу стек вызовов.
Может ли кто-нибудь помочь мне указать мне направление здесь?