Есть ли хорошая замена Valgrind для Windows?

Я изучал Valgrind, чтобы улучшить мое кодирование/отладку C, когда я обнаружил, что это только для Linux - у меня нет никакой другой необходимости или интереса к перемещению моей ОС в Linux, поэтому мне было интересно, есть ли такая же хорошая программа для Windows.

Ответ 1

Еще несколько хороших коммерческих инструментов:

Ответ 2

Как отметил jakobengblom2, у valgrind есть костюм инструментов. В зависимости от того, о котором вы говорите, есть разные элементы счетчика окон. Здесь я остановлюсь только на OSS или бесплатных инструментах.

1. MemCheck:

р. Память. Это относительно новый инструмент, очень хорошо работает в Windows 7. Моя любимая особенность заключается в том, что он группирует в отчет те же уровни распределения утечек.

http://code.google.com/p/drmemory/

Я также использовал UMDH (http://support.microsoft.com/kb/268343) и нашел его тихо полезным и простым в настройке. Он работает от Win2000 до Win7.

AppVerifier должен иметь swissknife для разработчиков собственных драйверов Windows, его "память" проверяет аналогичную работу http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx

2. Callgrind:

Мой любимый issleepy (http://www.codersnotes.com/sleepy) Это крошечный, но очень полезный и простой в использовании.

Если вам нужно больше возможностей, AMD CodeAnalyst ™ Performance Analyzer свободен: http://developer.amd.com/documentation/videos/pages/introductiontoamdcodeanalystperformanceanalyzer.aspx

Инструменты анализа производительности Windows бесплатны от Microsoft, не очень проста в использовании, но могут выполнять работу, если вы готовы потратить время. http://blogs.microsoft.co.il/blogs/sasha/archive/2008/03/15/xperf-windows-performance-toolkit.aspx Скачать: http://msdn.microsoft.com/en-us/performance/cc752957

3. Массив:

Аналогичные (не совсем точное соответствие) бесплатные инструменты для окон:

VMMap из sysinternals: http://technet.microsoft.com/en-us/sysinternals/dd535533

! команда heap в windbg: http://hacksoflife.blogspot.com/2009/06/heap-debugging-memoryresource-leak-with.html

4. Похожем на Cachegrind:

Вышеупомянутые инструменты производительности Windows обладают определенным уровнем возможности профилирования пропусков кэша L2, но не настолько хороши и удобны в использовании, как Cachegrind.

5. DRD:

Не нашли ничего свободного и столь же мощного в Windows, но единственный бесплатный инструмент для окон, который я могу найти, который немного близок, - это "блокировка" checker в AppVerifier: http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx

Ответ 3

Почему бы не использовать Valgrind + Wine для отладки вашего приложения Windows? Видеть http://wiki.winehq.org/Wine_and_Valgrind

(Chromium использует это, чтобы проверить версию Windows на наличие ошибок памяти, см. build.chromium.org и посмотрите на экспериментальные или водопады памяти и найдите вино.)

Там также д-р Память, см. dynamorio.org/drmemory.html

Ответ 4

Для Visual С++ попробуйте визуальный детектор утечек. Когда я использовал его, он обнаружил утечку памяти из вызова new и вернул фактическую строку в исходный код утечки. Последнюю версию можно найти на http://vld.codeplex.com/.

Ответ 6

Я хотел бы перечислить некоторые инструменты, надеюсь, будет полезно

прочитайте это article для более подробной информации

  • Очистить
  • Bounds Checker
  • Coverity (в основном это анализатор кода, но он будет улавливать утечку памяти в статическом режиме)
  • Световой код
  • пооддержки
  • ccmalloc
  • NJAMD
  • YAMD
  • Valgrind
  • mpatrol
  • Застраховать ++

Ответ 7

Попробуйте DUMA

Ответ 8

Существует часть инструментов отладки Windows для Windows. Он бесплатный и в основном является специализированным распределителем памяти/деаллокатором.

См. http://support.microsoft.com/kb/286470

Ответ 9

В сочетании с Visual Studio я обычно использую Visual Leak Detector или просто _CrtDumpMemoryLeaks(), который является вызовом win32 api. Оба ничего не представляют собой, но они выполняют свою работу.

Ответ 10

У меня была возможность использовать Compuware DevPartner Studio в прошлом, и это было действительно хорошо, но это довольно дорого. Более дешевое решение может быть GlowCode, я просто работал с версией 5.x и, несмотря на некоторые проблемы с присоединением к процессу, который мне нужен debug, он работал достаточно хорошо.

Ответ 11

Я любил "Валидатор памяти" от компании под названием "Проверка программного обеспечения".

Ответ 13

См. ссылку " Source Test Tools" на странице ресурсов программного обеспечения QA Testing and Test Tool для списка похожих инструментов.

Я использовал BoundsChecker, DevPartner Studio и Intel V-Tune в прошлом для профилирования. Мне понравилось V-Tune; вы можете эмулировать различные чипсеты Intel, и это даст вам подсказки о том, как оптимизировать для этой платформы.

Ответ 14

Как насчет Purify?

Ответ 15

Есть ли Jochen Kalmbach Detect Detector?

PS: URL-адрес последней версии похоронен где-то в потоке комментариев к статье.

Ответ 16

LeakDiag, UMDH, Verifier приложения, DebugDiag - все это полезные инструменты для повышения надежности кода и поиска утечек памяти.

Ответ 17

Библиотека Boost Test может обнаруживать утечки памяти.

Ответ 20

Если вы работаете с Borland/CodeGear/Embarcadero С++ Builder, вы можете использовать CodeGuard.

Ответ 21

Более или менее все Profiler включают проверку утечек памяти и отображение стека при распределении памяти.

Я могу порекомендовать Intels Parallel Inspector. Прост в использовании и не требует перекомпиляции. Пробная версия работает в течение 30 дней.

GlowCode и AtromatedQA также включают такие возможности. Все они предлагают бесплатные испытания.

Compuware DevPartner (aka BoundsChecker) в Contrast требует замедленного "инструментария", и приложение также работает медленнее при проверке ошибок. И BoundsChecker не может работать с 64-битными evsrions вообще. Мы отказались от этого инструмента.

Ответ 22

Лучший инструмент, который я когда-либо использовал, - DevPartner BoundsChecker - он не бесплатный, но у него есть период оценки.

Ответ 23

Еще один инструмент памяти для вашего списка: Валидатор памяти.

Не бесплатно, но не так дорого, как Purify или Boundschecker.

Ответ 24

Если вы не боитесь mingw, вот некоторые ссылки (некоторые могут работать с MSVC)... http://betterlogic.com/roger/?p=1140

Ответ 25

Мы просто завершаем инструмент проверки безопасности памяти для Windows, который обрабатывает GCC и Micrsoft Visual C (а не С++ еще), и смотрят для бета-тестеров.

EDIT 12 июня 2011 года: не Beta больше, теперь производство для GCC и Microsoft Visual Studio C.

Ответ 26

Сегодня я нашел этот проект SF:

http://sourceforge.net/p/valgrind4win/wiki/Home/

Они переносят valgrind в Windows. Вероятно, через несколько лет у нас будет надежный valgrind на окнах.

Ответ 27

Проверьте этот вопрос: Есть ли хорошая замена Valgrind для Windows?. Хотя предлагается общая замена valgrind, в основном она обсуждает обнаружение утечек памяти, а не обнаружения условий гонки.

Ответ 28

Определенно очистите! Я использовал это для анализа массивных базовых кодов ( > 3000 kSLOC) и нашел отличным.

Вам может понравиться этот список в Википедии.

Кстати, я нашел memwatch, чтобы быть полезным. Спасибо Йохану!

Ответ 29

Я использовал Insure ++, который отлично справляется с поиском утечек/повреждений памяти С++ и многих других ошибок, таких как неинициализированные переменные, ошибки указателя, строки и т.д. Он также визуально отображает "покрытие кода" и время использования памяти и т.д., которые дают более уверенно в вашем коде.. Вы можете попробовать его для версии трейла..