Обнаружение утечки памяти для проектов в смешанном режиме: управляемый, неуправляемый и собственный

У меня есть решение Visual Studio 2010, которое содержит проекты C # (управляемый), C ++ / CLI (неуправляемый) и чистый C ++ (собственный). Я хотел бы выполнить обнаружение утечки памяти во всех трех проектах или, по крайней мере, в собственном коде:

  • Проект C # ссылается на неуправляемую dll (у меня есть доступ к общедоступным инструментам профилирования памяти .NET, поэтому запускать это не проблема. профилирование памяти на нем).
  • C ++ / CLI - это очень тонкая оболочка для нативной библиотеки C ++, поэтому мне действительно не нужно ее профилировать (хотя я не особо об этом беспокоился).
  • Собственный код C ++ труднее всего профилировать.

Я пробовал использовать Intel Inspector XE 2011, но он просто слишком медленный ... выполнение такой простой вещи, как простая инициализация моей системы, занимает так много времени, что я еще даже не видел ее завершенной. Когда я запускаю свою систему без IXE 2011, на инициализацию моей системы у меня уходит не более 10-15 секунд, тогда как с IXE мы позволяем ей работать часами, и она не проходит инициализацию. Я попытался исключить определенные библиотеки из профилирования, но это не дало никакого эффекта.

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

int* memoryLeak = new int;

Я снова работал с VLD, но он выдал то же сообщение. Я подумываю переопределить операторы new / delete или даже просто malloc / free , но я хотел убедиться, что я я исчерпал все другие варианты, прежде чем углубиться в это.

Что я могу сделать, чтобы профилировать использование памяти моей собственной библиотекой C ++ с Visual Studio 2010? Существуют ли другие инструменты или методы, которые могут работать (даже если они не интегрируются с VS2010)?

7
задан Kiril 14 October 2011 в 20:12
поделиться