Что делать с! Address -filter Windbg - PullRequest
0 голосов
/ 10 мая 2011

В настоящее время я изучаю проблему, когда приложение использует много частной памяти для приложения C ++.Похоже, что много в коммит и резервной памяти на основе анализа дампа.

Я использую Windbg.Есть ли какой-нибудь способ узнать, что именно находится в выделенной и резервной памяти?Я сузил его до одной конкретной кучи.

Моя теория состоит в том, что это не выпущено.Я не могу жить отладки, у меня есть только дампы, чтобы продолжить.

Я уже использовал команду! Address -filter и получаю довольно мало информации, но как мне двигаться дальше?

Любые предложения помогут.

Ответы [ 2 ]

1 голос
/ 14 мая 2011

Существует несколько способов диагностики утечек памяти:

Последняя опция (инструмент UMDH) является частью пакета WinDbg и, как правило, является самой простой опцией для исследования утечек памяти. Обе опции фактически основаны на одной и той же функции, которая является способностью кучи NT сохранять стеки вызовов при выделении вместе с выделенной записью.

Обратите внимание, что помимо утечки памяти в кучах, у вас могут быть утечки других типов, которые могут привести к увеличению объема выделенной памяти. Например, вы могли бы вызвать VirtualAlloc напрямую и забыть VirtualFree.

1 голос
/ 10 мая 2011

Вы можете использовать команду !heap -s для получения информации об использовании памяти в WinDbg. Здесь есть учебник по обнаружению утечек с windbg здесь .

...