Visual C++ - обнаружение утечек памяти
Какие-либо предложения? В этом посте рассказывается о Visual Leak Detector, но я ищу другие инструменты. Также, пожалуйста, не рекомендуйте это.
10 ответов
Я использовал Visual Leak Detector совсем недавно, и он работает довольно хорошо. Это очень просто встроить (просто включите vld.h
) и не требует никаких инструментов. Я обнаружил, что мне нужно было написать пару сценариев, чтобы разобрать вывод в нечто более полезное для моих целей (оно требует достойного графического интерфейса). Обратите внимание на новый веб-сайт - проект активно поддерживается на Codeplex - ссылка на Codeproject очень старая.
Попробуйте Deleaker или DevPartner, они оба достаточно хороши.
Обновить:
C++ Memory Validator, работает нормально и по справедливой цене.
Если вы можете позволить себе немного денег, используйте Intel Parallel Inspector ( http://software.intel.com/en-us/intel-parallel-inspector).
Он не требует никаких изменений кода и предоставляет хорошие отчеты.
Мне пришлось искать хорошие инструменты, чтобы сделать это в работе, и это лучший (на данный момент) инструмент, который я нашел.
По предложению Ноа Робертса, я тоже чувствовал, что валидатор памяти - лучший инструмент для обнаружения утечек в Visual studio.
Purify также работает.
Задал аналогичный вопрос не так давно, но в частности, в 2010 году: профилировщик VS2010 / обнаружение утечек
Если вы не используете 2010, вы можете рассмотреть AQtime. В большинстве случаев это не так уж страшно. Иногда думают, что он не может найти объект, связанный с утечкой, и просто говорит "память CRT" или что-то еще.
Другой, который я недавно попробовал, называется "Memory Validator". Не совсем приятный интерфейс, но он, кажется, работает и работает с 2010 годом (просто нет другого вида профилирования, чего я ожидаю от такого коммерческого инструмента).
Может быть, GlowCode, как было упомянуто в других похожих вопросах, на SO, когда я искал перед тем, как спрашивать.
Также есть верификатор приложения. Он может отслеживать целый ряд других проблем, кроме утечек, таких как места, где вы забыли освободить объекты win32, такие как дескрипторы и т.д...
Ссылка MSDN: http://msdn.microsoft.com/en-us/library/ms220948(VS.80).aspx
http://www.saunalahti.fi/~tarmpika/diagnostic/
Я пробовал так много детекторов утечки памяти, что их сложно сосчитать. Некоторые из них потерпели крах, некоторые из них дали неверные результаты, некоторые просто не помогли. В конце концов я сделал свой собственный детектор утечек, но вложил в него столько усилий - поэтому сделал его несвободным на время. Поддерживаются управляемые / собственные / 32- и 64-разрядные архитектуры.
Попробуйте Dr.Memory. Они имеют надлежащую визуальную студийную интеграцию и отличную документацию. Прост в использовании тоже.
Джейкоб, инструмент BoundsChecker в DevPartner Studio содержит два типа детекторов утечки для VC++. Неструктурированная версия будет табулировать утечки при остановке процесса. Измерительный детектор времени компиляции прервется при утечках в момент возникновения утечек, показывая как текущий стек вызовов в точке утечки, так и трассировку стека выделения, показывающую, где была выделена утечка памяти. 64-разрядная версия DPS и BoundsChecker 10.5 поставляется 4 февраля 2011 года с поддержкой приложений x64 для Visual Studio 2010, 2008 и 2005. У нас также есть новая модель ценообразования, поэтому вы можете лицензировать только функции BoundsChecker и перейти на полную версию DPS. комплект только в том случае, если позже вам понадобятся другие профилировщики или возможности статического анализа. Не забудьте торговаться с вашим торговым представителем тоже. Оплата по прайс-листу похожа на оплату наклейкой нового автомобиля. Бесстыдная вилка: я работаю в команде DevPartner. DPS 10.5 представляет самый большой выпуск технических возможностей моей команды с тех пор, как Compuware закрыла лабораторию NuMega. Пожалуйста, оцените его для вашего собственного приложения и технического стека, когда выйдет 10.5. Приветствия. Мэтт Шютце, владелец продукта DevPartner (и да, это означает ПО в обычных ролях команды Scrum).
VLD нельзя доверять для более серьезных проектов.
У Intel есть хороший инструмент под названием Inspector.
После 3 дней поиска хорошего инструмента для обнаружения утечек в двоичных файлах x64 с C++ в Visual Studio, это единственный хороший вариант, который я нашел.