Ответ 1
Для поиска утечек памяти вы можете попробовать Инструмент визуального обнаружения утечки.
Кто-нибудь знает профайлер и детектор утечек, который будет работать с кодом VS2010? Предпочтительно тот, который работает на Win7.
Я искал здесь и в Google. Я нашел один детектор утечки, который работает (Memory Validator), но я не слишком впечатлен. Во-первых, это показывает кучу утечек меню и вещи, которые я довольно уверен, не настоящие. Я также пробовал GlowCode, но он просто профилировщик и отказывается устанавливать на win7.
Я использовал AQtime. У него было все, что мне нужно, обнаружение утечки памяти/ресурсов, профилирование различных вещей, статический анализ и т.д. К сожалению, теперь он дает фиктивные результаты.
Моя главная проблема заключается в том, что VS2010 говорит, что в программе нет утечек в VS2005. Я почти уверен, что это ложные срабатывания, но я не могу найти хороший инструмент для проверки этого. Валидатор памяти не показывает те же самые, и отчетность об утечках из VS не кажется рациональной.
Для поиска утечек памяти вы можете попробовать Инструмент визуального обнаружения утечки.
Ной, как упоминал Ори, DevPartner Studio от Micro Focus имеет как обнаружение утечки, так и другие функции профилирования времени исполнения. В отличие от высоких цен, которые DPS имел в Compuware, теперь вы можете лицензировать только профилировщики времени выполнения, а не весь пакет, если это вам нужно. Бесстыдный плагин: я работаю над командой DevPartner. Наши 64-битные приложения поддерживают корабли в выпуске 10.5 4 февраля 2011 года. Ищите новости о выпуске и загружайте их на http://www.DevPartner.com.
Лично я люблю DevPartner. Если вы работаете в большой компании, возможно, вы можете убедить их заплатить за здоровую лицензию. Это дорого, но это очень прочный.
Я использовал несколько коммерческих альтернатив и хотя они могут принести фантастические результаты, они также часто просто не работают по неизвестным причинам:
В последние годы я вернулся к довольно грубому способу отбора заявки. Это не так идеально, как использование инструментов, но оно намного быстрее, может быть запущено в любом приложении и всегда работает. Мой любимый "Very Sleepy" (http://www.codersnotes.com/sleepy), но также и Luke StackWalker (http://lukestackwalker.sourceforge.net/). Поскольку приложения могут запускаться сразу и без заметного замедления, цикл "изменение приложения, профиля" очень короткий и эффективный.
Для поиска утечек памяти в Windows есть несколько инструментов, которые вы можете использовать. Опять же, они далеки от совершенства и часто могут только исследовать запущенные приложения извне, а не просто сообщать об утечках в конце приложения. Найдите "средства отладки Microsoft" (UMDH, LeakDiag, gflags). Лично мне легче просто написать собственный диспетчер памяти и сообщить об утечках в конце приложения. Это не так сложно писать. Что вам нужно сделать:
Здесь действительно простой и простой в использовании код обнаружения утечки: http://www.codeproject.com/kb/cpp/MemLeakDetect.aspx
Не уверен, как связать это, что я ранее разместил в ответ на аналогичный вопрос:
Вы можете использовать umdh.exe для захвата и сравнения моментальных снимков процесса до и после утечки. Это лучше всего работает с двоичными файлами Debug, но является жизнеспособным с версией, при условии, что пути к символам правильно установлены - это даст вам стоп-сигналы памяти, выделенные между 1-м и 2-м моментальными снимками.
http://support.microsoft.com/kb/268343
Этот подход имеет то преимущество, что он свободен.