Подтвердить что ты не робот

Профилирование/обнаружение утечки VS2010

Кто-нибудь знает профайлер и детектор утечек, который будет работать с кодом VS2010? Предпочтительно тот, который работает на Win7.

Я искал здесь и в Google. Я нашел один детектор утечки, который работает (Memory Validator), но я не слишком впечатлен. Во-первых, это показывает кучу утечек меню и вещи, которые я довольно уверен, не настоящие. Я также пробовал GlowCode, но он просто профилировщик и отказывается устанавливать на win7.

Я использовал AQtime. У него было все, что мне нужно, обнаружение утечки памяти/ресурсов, профилирование различных вещей, статический анализ и т.д. К сожалению, теперь он дает фиктивные результаты.

Моя главная проблема заключается в том, что VS2010 говорит, что в программе нет утечек в VS2005. Я почти уверен, что это ложные срабатывания, но я не могу найти хороший инструмент для проверки этого. Валидатор памяти не показывает те же самые, и отчетность об утечках из VS не кажется рациональной.

4b9b3361

Ответ 2

Ной, как упоминал Ори, DevPartner Studio от Micro Focus имеет как обнаружение утечки, так и другие функции профилирования времени исполнения. В отличие от высоких цен, которые DPS имел в Compuware, теперь вы можете лицензировать только профилировщики времени выполнения, а не весь пакет, если это вам нужно. Бесстыдный плагин: я работаю над командой DevPartner. Наши 64-битные приложения поддерживают корабли в выпуске 10.5 4 февраля 2011 года. Ищите новости о выпуске и загружайте их на http://www.DevPartner.com.

Ответ 3

Лично я люблю DevPartner. Если вы работаете в большой компании, возможно, вы можете убедить их заплатить за здоровую лицензию. Это дорого, но это очень прочный.

Ответ 4

Я использовал несколько коммерческих альтернатив и хотя они могут принести фантастические результаты, они также часто просто не работают по неизвестным причинам:

  • Rational Quantity: фантастический продукт для профилирования производительности, но в течение нескольких лет они не выпускали новые версии, и часто (в моем случае) программное обеспечение часто отказывалось работать
  • AQTime: тоже очень хорошо (меньше, чем Rational Quantity), но также иногда отказывается работать по неизвестным причинам.
  • Валидатор производительности: тот же

В последние годы я вернулся к довольно грубому способу отбора заявки. Это не так идеально, как использование инструментов, но оно намного быстрее, может быть запущено в любом приложении и всегда работает. Мой любимый "Very Sleepy" (http://www.codersnotes.com/sleepy), но также и Luke StackWalker (http://lukestackwalker.sourceforge.net/). Поскольку приложения могут запускаться сразу и без заметного замедления, цикл "изменение приложения, профиля" очень короткий и эффективный.

Для поиска утечек памяти в Windows есть несколько инструментов, которые вы можете использовать. Опять же, они далеки от совершенства и часто могут только исследовать запущенные приложения извне, а не просто сообщать об утечках в конце приложения. Найдите "средства отладки Microsoft" (UMDH, LeakDiag, gflags). Лично мне легче просто написать собственный диспетчер памяти и сообщить об утечках в конце приложения. Это не так сложно писать. Что вам нужно сделать:

  • Внедрить правильные новые и удалить операторы (я думаю, вы должны реализовать 4 новых и 4 оператора delete)
  • В реализации нового, получите стек вызовов (найдите StackWalk) и сохраните его с выделенной памятью.
  • Создайте класс, который запустит диспетчер памяти в конструкторе, и сообщите обо всех утечках (включая стек вызовов) в деструкторе.
  • Сделать глобальную переменную этого класса. Может потребоваться сделать его специальной глобальной переменной с помощью #pragma (init_seg).

Ответ 6

Не уверен, как связать это, что я ранее разместил в ответ на аналогичный вопрос:

Вы можете использовать umdh.exe для захвата и сравнения моментальных снимков процесса до и после утечки. Это лучше всего работает с двоичными файлами Debug, но является жизнеспособным с версией, при условии, что пути к символам правильно установлены - это даст вам стоп-сигналы памяти, выделенные между 1-м и 2-м моментальными снимками.

http://support.microsoft.com/kb/268343

Этот подход имеет то преимущество, что он свободен.