Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

1.Проверка памяти:

ДокторПамять.Это относительно новый инструмент, который очень хорошо работает в 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.Вызов Grind:

Мое любимое - очень сонное ( 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.Кэшегринд:

Вышеупомянутые средства повышения производительности Windows обладают определенным уровнем возможностей профилирования пропусков кэша L2, но не такими хорошими и простыми в использовании, как 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, например, позволяет обнаруживать и изолировать память утечки в ваших программах

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

прочтите эту статью для получения более подробной информации

<Ол>
  • Очистить
  • Проверка границ
  • Coverity (в основном это анализатор кода, но он обнаружит утечку памяти в статическом режиме)
  • Glow Code
  • пооддержки
  • ccmalloc
  • NJAMD
  • YAMD
  • Valgrind
  • mpatrol
  • Застраховать ++
  • Попробуйте DUMA

    В состав средств отладки для Windows входит Pageheap.exe. Это бесплатно и в основном пользовательский распределитель / освобождение памяти.

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

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

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

    Мне очень нравится Memory Validator , от компании под названием Software Проверка.

    Viusual Studio может помочь в обнаружении утечек памяти. См. Советы и рекомендации по Microsoft Visual C ++ - > «Утечки памяти» раздел. См. Также эту запись в SO

    Хотя настоящая трассировка возможна только в Team Edtion Visual Studio.

    См. Инструменты тестирования исходного кода " ссылка на страницу ресурсов для тестирования и тестирования инструментов Software QA для получения списка похожих инструментов.

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

    Подходит ли детектор утечки памяти Йохена Кальмбаха ?

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

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

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

    Как насчет Purify ?

    Попробуйте продукт 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 - это не бесплатно, но оно имеет период оценки.

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

    Не бесплатно, но далеко не так дорого, как 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 на окнах.

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

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

    Возможно, вы захотите прочитать, что Mozilla делает в отношении утечек памяти. Одним из инструментов в их наборе инструментов является сборщик мусора Hans Boehm, используемый как детектор утечки памяти .

    Вы можете попробовать RuntimeChecker пробную версию до Пробная версия IBM Purify .

    Бесплатным решением будет использование следующего кода в Visual Studio:

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    

    Просто напишите это в верхней части всех ваших файлов cpp. Это обнаружит утечки памяти вашего приложения при остановке отладочного прогона и отобразит их в окне вывода. Двойной щелчок по линии утечки памяти выделит вам строку, где память выделена и никогда не освобождается. Это может помочь вам: http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml

    scroll top