Обнаружение утечки памяти через присоединение к процессу

Я разрабатываю подключаемый модуль DLL Visual Studio 2008, который работает в более крупном приложении. Я могу создать его в режиме отладки, присоединить к процессу и выполнить пошаговый код. Основная проблема, с которой я столкнулся сейчас, — обнаружение утечки памяти.

Обычно я использую VLD, но, похоже, это дает мне вывод только тогда, когда я запускаю исполняемый файл из Visual Studio. VLD не дает мне никакого вывода через присоединение к процессу, даже после завершения основной программы, в которой размещен мой плагин.

Я мог бы создать свой собственный тестовый контейнер, однако это займет некоторое время и все равно не покроет большую часть функциональности.

Есть ли простой способ обнаружения утечки памяти через присоединение к процессу?

Я пробовал _CrtDumpMemoryLeaks(), однако он не работает, он не обнаруживает простую строку, например

int * memoryleak = new int[5000000];

который он обычно обнаруживает при запуске непосредственно из Visual Studio

Любая помощь приветствуется, спасибо!


person Bobby Pardridge    schedule 01.11.2017    source источник


Ответы (1)


Вы можете использовать утилиту umdh, чтобы обнаружить утечку памяти в вашей dll. UMDH включен в средства отладки для Windows. Дополнительные сведения см. по следующей ссылке: https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/using-umdh-to-find-a-user-mode-утечкапамяти

Если вы хотите использовать инструмент для проверки утечки памяти с простым в использовании графическим интерфейсом для настройки обнаружения утечки памяти, а также создания отчетов об утечке, вы можете воспользоваться инструментом C++ Memory Validator от Software Verify. Хотя это платный инструмент, вы можете проверить его пробную версию, чтобы оценить его.

person Amit Rastogi    schedule 02.11.2017