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