Я искал Valgrind, чтобы помочь улучшить кодирование / отладку C, когда обнаружил, что это только для Linux - у меня больше нет необходимости или интереса в переносе моей ОС на Linux, поэтому мне было интересно, есть ли такая же хорошая программа для Windows.
210
Ответы:
Еще несколько хороших коммерческих инструментов:
источник
Как указал jakobengblom2, у valgrind есть набор инструментов. В зависимости от того, о чем вы говорите, существуют разные части счетчика окон. Я упомяну только OSS или бесплатные инструменты здесь.
1. MemCheck:
Доктор Память. Это относительно новый инструмент, который очень хорошо работает в Windows 7. Моя любимая особенность заключается в том, что он группирует в отчете одинаковые стеки распределения утечек.
http://code.google.com/p/drmemory/
Я также использовал UMDH ( http://support.microsoft.com/kb/268343 ) и нашел его очень полезным и простым в настройке. Работает с Win2000 до Win7.
AppVerifier должен иметь швейцарский нож для разработчиков собственного кода Windows, его средство проверки памяти выполняет аналогичную работу http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx
2. Callgrind:
Мой любимый - verysleepy ( http://www.codersnotes.com/sleepy ). Он крошечный, но очень полезный и простой в использовании.
Если вам нужны дополнительные функции, анализатор производительности AMD CodeAnalyst ™ предоставляется бесплатно: 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. Массив:
Подобные (не совсем точные) бесплатные инструменты для Windows:
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 обладают определенным уровнем профилирования пропущенного кэша второго уровня, но не так хороши и просты в использовании, как Cachegrind.
5. DRD:
Пока еще не нашел ничего бесплатного и мощного в Windows. Единственный бесплатный инструмент для Windows, который я могу найти немного ближе, - это средство проверки «блокировки» в AppVerifier: http://msdn.microsoft.com/en-us/library /dd371695%28v=vs.85%29.aspx
источник
Почему бы не использовать Valgrind + Wine для отладки вашего приложения Windows? Смотрите http://wiki.winehq.org/Wine_and_Valgrind
(Chromium использует это, чтобы проверить версию Windows на наличие ошибок памяти; см. Build.chromium.org и посмотрите на экспериментальные водопады или водопады памяти и найдите вино.)
Там также доктор памяти, см. Dynamorio.org/drmemory.html
источник
Для Visual C ++ попробуйте Visual Leak Detector . Когда я использовал его, он обнаружил утечку памяти при
new
вызове и вернул фактическую строку в исходном коде утечки. Последнюю версию можно найти по адресу http://vld.codeplex.com/ .источник
Среда разработки для Windows, которую вы используете, может содержать собственные инструменты. Visual Studio, например, позволяет обнаруживать и изолировать утечки памяти в ваших программах
источник
Я хотел бы перечислить некоторые инструменты, надеюсь, будет полезно
прочитайте эту статью для более подробной информации
источник
Попробуй ДУМУ
источник
Pageheap.exe является частью средств отладки для Windows. Это бесплатно и в основном пользовательский распределитель / освобождение памяти.
См. Http://support.microsoft.com/kb/286470
источник
gflags
+gdb
(от mingw) полезным в диагностике.В сочетании с Visual Studio я обычно использую Visual Leak Detector или просто _CrtDumpMemoryLeaks (), который является вызовом API Win32. Оба ничего особенного, но они сделали свою работу.
источник
В прошлом у меня была возможность использовать Compuware DevPartner Studio, и это было действительно хорошо, но это довольно дорого. Более дешевым решением может быть GlowCode , я просто работал с версией 5.x и, несмотря на некоторые проблемы с подключением к процессу, который мне нужно было отлаживать, он работал довольно хорошо.
источник
Я любил Memory Validator от компании Software Verification.
источник
Viusual Studio может помочь в обнаружении утечек памяти. См. Раздел Советы и рекомендации по Microsoft Visual C ++ -> «Утечки памяти». Смотрите также этот пост в SO
Хотя реальная трассировка возможна только в Team Edtion Visual Studio.
источник
См. Ссылку « Исходные инструменты тестирования » на странице «Ресурсы для тестирования и тестирования инструментов программного обеспечения», где приведен список аналогичных инструментов.
В прошлом я использовал BoundsChecker, DevPartner Studio и Intel V-Tune для профилирования. Мне больше всего понравился V-Tune; вы можете эмулировать различные наборы микросхем Intel, и это даст вам советы о том, как оптимизировать работу под эту платформу.
источник
Подходит ли детектор утечки памяти Йохена Кальмбаха ?
PS: URL к последней версии находится где-то в ветке комментариев к статье.
источник
LeakDiag, UMDH, App Verifier, DebugDiag - все это полезные инструменты для повышения надежности кода и обнаружения утечек памяти.
источник
Библиотека Boost Test может обнаружить утечки памяти.
источник
Как насчет Очищения ?
источник
Попробуйте продукт Intel Inspector XE, который поможет вам обнаружить проблемы с памятью и многопоточностью: http://software.intel.com/en-us/articles/intel-inspector-xe/
источник
Возможно CodeSnitch будет то, что вы ищете? http://www.entrek.com/codesnitch.html
источник
Если вы разрабатываете с Borland / CodeGear / Embarcadero C ++ Builder, вы можете использовать CodeGuard.
источник
Более или менее все профилировщики включают проверку на утечки памяти и показывают вам стек, когда память была выделена.
Я могу рекомендовать Intel Parallel Inspector . Прост в использовании и не требует перекомпиляции. Пробная версия работает в течение 30 дней.
GlowCode и AtromatedQA также включают такие возможности. Все они предлагают бесплатные пробные версии.
Compuware DevPartner (также известный как BoundsChecker) в Contrast нуждается в замедленной перекомпиляции «инструментария», и приложение также работает медленнее при проверке на наличие ошибок. А BoundsChecker вообще не может работать с 64-битными евсрионами. Мы отказались от этого инструмента.
источник
Лучший инструмент, который я когда-либо использовал, это DevPartner BoundsChecker - он не бесплатный, но у него есть период оценки.
источник
Еще один инструмент памяти для вашего списка: Memory Validator .
Не бесплатно, но далеко не так дорого, как Purify или Boundschecker.
источник
Если вы не боитесь mingw, вот несколько ссылок (некоторые могут работать с MSVC) ... http://betterlogic.com/roger/?p=1140
источник
Мы только что закончили инструмент проверки безопасности памяти для Windows, который обрабатывает GCC и Micrsoft Visual C (пока не C ++), и ищем бета-тестеров.
РЕДАКТИРОВАТЬ 12 июня 2011 года: больше не бета, теперь производство для GCC и Microsoft Visual Studio C.
источник
Я нашел этот проект SF сегодня:
http://sourceforge.net/p/valgrind4win/wiki/Home/
Они портируют valgrind на Windows. Возможно, через несколько лет у нас будет надежный валгринд на окнах.
источник
Проверьте этот вопрос: есть ли хорошая замена Valgrind для Windows? , Хотя и предлагается общий заменитель valgrind, в основном речь идет о детекторах утечки памяти, а не об обнаружении состояния гонки.
источник
Я использовал Insure ++, который отлично справляется с поиском утечек / повреждений памяти в c ++ и многих других ошибок, таких как неинициализированные переменные, ошибки указателей, строки и т. Д. Он также визуально отображает «покрытие кода» и использование памяти во время выполнения и т. Д., Которые дают больше уверенности в ваш код .. Вы можете попробовать его для версии следа ..
источник
Возможно, вы захотите прочитать, что Mozilla делает в отношении утечек памяти. Одним из инструментов в их наборе инструментов является сборщик мусора Hans Boehm, используемый в качестве детектора утечки памяти.
источник
Вы можете попробовать пробную версию RuntimeChecker в IBM Purify. .
Бесплатным решением было бы использовать следующий код в Visual Studio:
Просто напишите это в верхней части всех ваших файлов cpp. Это обнаружит утечки памяти вашего приложения при остановке отладочного прогона и отобразит их в окне вывода. Двойной щелчок по линии утечки памяти выделит вам строку, где память выделена и никогда не освобождается. Это может вам помочь: http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml
источник