Я изучал Valgrind, чтобы улучшить мое кодирование/отладку C, когда я обнаружил, что это только для Linux - у меня нет никакой другой необходимости или интереса к перемещению моей ОС в Linux, поэтому мне было интересно, есть ли такая же хорошая программа для Windows.
Есть ли хорошая замена Valgrind для 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/.
Ответ 5
Среда разработки для Windows, которую вы используете, может содержать свои собственные инструменты. Visual Studio, например, позволяет обнаруживать и изолировать утечки памяти в ваших программах
Ответ 6
Я хотел бы перечислить некоторые инструменты, надеюсь, будет полезно
прочитайте это article для более подробной информации
- Очистить
- Bounds Checker
- Coverity (в основном это анализатор кода, но он будет улавливать утечку памяти в статическом режиме)
- Световой код
- пооддержки
- ccmalloc
- NJAMD
- YAMD
- Valgrind
- mpatrol
- Застраховать ++
Ответ 7
Попробуйте DUMA
Ответ 8
Существует часть инструментов отладки Windows для Windows. Он бесплатный и в основном является специализированным распределителем памяти/деаллокатором.
Ответ 9
В сочетании с Visual Studio я обычно использую Visual Leak Detector или просто _CrtDumpMemoryLeaks(), который является вызовом win32 api. Оба ничего не представляют собой, но они выполняют свою работу.
Ответ 10
У меня была возможность использовать Compuware DevPartner Studio в прошлом, и это было действительно хорошо, но это довольно дорого. Более дешевое решение может быть GlowCode, я просто работал с версией 5.x и, несмотря на некоторые проблемы с присоединением к процессу, который мне нужен debug, он работал достаточно хорошо.
Ответ 11
Я любил "Валидатор памяти" от компании под названием "Проверка программного обеспечения".
Ответ 12
Viusual Studio может помочь обнаружить утечки памяти. См. Советы и подсказки Microsoft Visual С++ → "Утечки памяти". См. Также этот пост в SO
Хотя реальная трассировка возможна только с Team Edtion Visual Studio.
Ответ 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 может обнаруживать утечки памяти.
Ответ 18
Попробуйте продукт Intel Inspector XE, который поможет вам выявить проблемы с памятью и потоками: http://software.intel.com/en-us/articles/intel-inspector-xe/
Ответ 19
Возможно, CodeSnitch будет чем-то, за чем вы после? http://www.entrek.com/codesnitch.html
Ответ 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 ++, который отлично справляется с поиском утечек/повреждений памяти С++ и многих других ошибок, таких как неинициализированные переменные, ошибки указателя, строки и т.д. Он также визуально отображает "покрытие кода" и время использования памяти и т.д., которые дают более уверенно в вашем коде.. Вы можете попробовать его для версии трейла..
Ответ 30
Возможно, вы захотите прочитать, что делает Mozilla в отношении утечек памяти. Одним из инструментов на панели инструментов является сборщик мусора Hans Boehm, который используется как детектор утечки памяти.