Lakkan Ответов: 3

Бесплатный инструмент профилировщика памяти для C++


Привет Друзья,

Не могли бы вы предложить бесплатный инструмент профилировщика памяти для C++(Visualstudio2005).
Примечание: Я хотел бы иметь возможность видеть график использования памяти..

С уважением
Нараяна Редди.Л

xenotron

Этой информации может быть недостаточно для того, чтобы ppl давал предложения. Может быть, дать больше информации о вашем случае поможет.
Что именно вы хотите описать? Общая выделенная память? Фрагментация? Количество выделений? Распределение размера выделенных / освобожденных кусков? Поймать нераспределенные куски на выходе? Выясните, какой модуль протекает и где? Используете ли вы пользовательское управление памятью? ...

Lakkan

Спасибо за ваш ответ..
Мое требование очень простое: показать утечки памяти в виде графика(Память против времени). [Требуется бесплатный инструмент].

3 Ответов

Рейтинг:
8

armagedescu

Смотрите в разделе Администрирование есть монитор производительности. Вы можете добавить туда наборы сборщиков данных, системные или пользовательские, для любого вида ресурсов. Вы можете выводить результаты в двоичные или текстовые файлы, использовать результаты для построения диаграмм, графиков, трендов, вычислений. Это очень продвинутый инструмент, и он уже существует в административных инструментах Windows.
Попробуйте использовать его, и если у вас есть еще вопросы, спросите.
Более точную информацию о выделении памяти вы можете получить с помощью WinDBG. Вы можете скачать его бесплатно с сайта microsoft. Кроме того, более продвинутые отчеты вы можете создавать с помощью Debug Diag.


Lakkan

Требование простое: показать утечки памяти в виде графика (Память против времени). Спасибо за ваше решение, я надеюсь, что оно сработает ..

armagedescu

Не волнуйся, это работает. Вы можете создавать графики прямо внутри монитора производительности.

Рейтинг:
23

Volynsky Alex

Здесь вы можете найти некоторые инструменты, которые вы могли бы использовать для своей работы:

(1) С Valgrind ( http://www.valgrind.org/) представляет собой инструментальную основу для создания инструментов динамического анализа. Существуют инструменты Valgrind, которые могут автоматически обнаруживать множество ошибок управления памятью и потоков, а также подробно профилировать ваши программы. Вы также можете использовать Valgrind для создания новых инструментов. В настоящее время дистрибутив Valgrind включает в себя шесть инструментов производственного качества: детектор ошибок памяти, два детектора ошибок потоков, профилировщик кеширования и прогнозирования ветвлений, кэш для создания графа вызовов и профилировщик прогнозирования ветвлений. , и профилировщик кучи. Он также включает в себя три экспериментальных инструмента: детектор переполнения кучи / стека / глобального массива, второй профилировщик кучи, который проверяет, как используются блоки кучи, и базовый векторный генератор блоков SimPoint.

(2)Если команда детектор ошибок памяти
(http://valgrind.org/docs/manual/mc-manual.html)

(3) Попробуйте гул-perftools ( http://code.google.com/p/gperftools/?redir=1 )
Профилирование кучи включено в TCMalloc, и я считаю, что можно " сбросить"
использование кучи непосредственно перед вашей "определенной стадией" и запрос состояния кучи сразу после этого

Фреймворк Google для написания тестов на C++ (http://code.google.com/p/googletest/)на различных платформах (Linux, Mac OS X, Windows, Cygwin, Windows CE и Symbian).
На основе архитектуры xUnit. Поддерживает автоматическое обнаружение тестов, богатый набор утверждений, определяемых пользователем утверждений, тесты смерти, фатальные и несмертельные сбои, параметризованные по значению и типу тесты, различные варианты запуска тестов и генерацию отчетов о тестировании XML.

(4)Анализатор производительности AMD CodeAnalyst (http://developer.amd.com/tools/CodeAnalyst/Pages/default.aspx) помогает разработчикам программного обеспечения повысить производительность приложений, драйверов и системного программного обеспечения. Хорошо настроенное программное обеспечение обеспечивает лучший опыт конечного пользователя за счет более короткого времени отклика, увеличения пропускной способности и лучшего использования ресурсов. AMD CodeAnalyst-это инструмент профилирования, используемый
разработчики по всему миру для повышения производительности игр и медиа-ориентированных приложений, обработки транзакций и высокопроизводительных научных/инженерных вычислений.

(5)Валидатор Памяти, Детектор утечки памяти C++ (http://www.softwareverify.com/cpp-memory.php) Memory Validator - это программный инструмент для обнаружения утечек памяти и ошибок памяти, предназначенный для использования разработчиками программного обеспечения, тестировщиками обеспечения качества программного обеспечения и сотрудниками службы поддержки клиентов.

(6)AQTime (http://www.automatedqa.com/downloads/aqtime/index.asp), это один из лучших инструментов профилирования, которые я когда-либо использовал. Это не бесплатно, но вы можете получить 30-дневную пробную версию, так что если вы планируете оптимизировать и профилировать только один проект и вам достаточно 30 дней, то я бы рекомендовал использовать это приложение.

(7) AMD Code Analyst можно бесплатно (http://developer.amd.com/tools/CodeAnalyst/Pages/default.aspx)

(8) У Microsoft есть инструменты анализа производительности Windows
(http://msdn.microsoft.com/en-us/performance/default.aspx)

(9)Проффи (http://www.pauldoo.com/proffy/) Профилировщик нативного кода для Windows (бесплатное программное обеспечение для профилирования приложений нативного кода под Windows.Только отбор проб, никаких навязчивых приборов.Профилирование графа вызовов. Без графического интерфейса. Включите в приложение один файл заголовка C++, чтобы точно контролировать время запуска и остановки профилировщика.
результаты сохраняются в XML (просматриваются в вашем браузере) и Graphviz "точка".Может профилировать многопоточные приложения.

(10) Блестящий ( http://code.google.com/p/shinyprofiler/ )- это молниеносный, полностью документированный и на сегодняшний день самый простой в использовании профилировщик C/C++/Lua без обширной операции. Результаты сглаживаются и отображаются во время выполнения в виде дерева вызовов или сортируются по времени. Выходные данные также можно визуализировать в виде графиков в Ogre3D или вашем пользовательском движке

(11)Очень Хочется Спать (http://www.codersnotes.com/sleepy/)- это C / C++ CPU profiler для систем Windows.
Very Sleepy имеет множество улучшений, таких как профилирование графа вызовов, улучшенный пользовательский интерфейс, сохранение нагрузки, поддержка GCC и 64-битная поддержка. Он поддерживает любое собственное приложение Windows, если оно имеет стандартную отладочную информацию PDB или DWARF2. Перекомпиляция не требуется – он может просто прикрепиться к любому приложению во время работы.
Sleepy выпускается под публичной лицензией GNU, поэтому вам гарантировано право на исходный код и изменять его по своему усмотрению.

(12)Рациональное Очищение ( http://www-01.ibm.com/software/awdtools/purify/ и http://www-01.ibm.com/software/awdtools/purify/win/ )- это инструмент динамического анализа программного обеспечения .Указывает на труднодоступные ошибки памяти, такие как неинициализированный доступ к памяти, переполнение буфера и неправильное освобождение памяти. Определяет утечки памяти (блоки памяти, которые больше не имеют допустимого указателя). Не требует доступа к исходному коду и поэтому может использоваться со сторонними библиотеками. Поддержка Visual C++ и .NET интегрируется с Microsoft® Visual Studio.Поддерживаемые операционные системы: Windows famil.
Он включает в себя две возможности:
1) отладка памяти (указывает на труднодоступные ошибки памяти, такие как неинициализированный доступ к памяти,
переполнение буфера и неправильное освобождение памяти),
2) обнаружение утечки памяти
(идентифицирует блоки памяти, которые больше не имеют допустимого указателя).
Purify поддерживается в Windows, Linux, Solaris и AIX.

(13) DevPartner (http://www.microfocus.com/products/product-trials/index.aspx?ref=ddm?dpprodtry[^]) анализ качества кода, статики, времени выполнения и безопасности
DevPartner-это виртуальный эксперт, который автоматически обнаруживает и диагностирует дефекты программного обеспечения, проблемы производительности и уязвимости безопасности, скрывающиеся в коде приложения.

(14) Профилировщик-EQATEC (http://eqatec.com/ )
Вы можете создать бесплатную пробную учетную запись на 15 дней и самостоятельно оценить наше решение, опираясь на нашу онлайн-документацию

P/S
Возможно, вы захотите взглянуть на отладочную кучу CRT (через crtdbg.h), которая уже доступна в VS2005.
Отчеты грубые, и нет никакого пользовательского интерфейса, чтобы управлять им (если только вы не можете найти что-то в Google, возможно),
но у него может быть информация, которую вы ищете - и у вас она уже есть:
http://msdn.microsoft.com/en-us/library/x98tx3cf.aspx


Y.Desros

Очень гооооооооооод!!!!!!!!!!!!!

Volynsky Alex

Спасибо.
Вы также можете посмотреть здесь: http://en.wikipedia.org/wiki/Memory_debugger

xenotron

+5 Хороший список! Я могу только рекомендовать valgrind, если кто-то разрабатывает на linux, его бесплатно и надирает задницу! В windows я использовал 2 коммерческих продукта: Rational Purify и Insure++. В большинстве случаев они вам не нужны, но запуск автоматического теста valgrind ночью может вызвать некоторые интересные проблемы на другой день :D

Рейтинг:
17

Albert Holguin

Есть ли какая-то причина, по которой вы не хотели бы использовать диспетчер задач? Он не имеет большой детализации, но вы все равно можете видеть использование памяти и любые возникающие дельты, так что любые вопиющие утечки памяти все равно видны оттуда.

Если этого недостаточно, возможно, если вы укажете, зачем вам это нужно, вы сможете получить другие предложения от пользователей.


Stefan_Lang

Он не имеет большой степени детализации
Это довольно эвфемистическое описание простого отображения одного числа, которое даже обычно не является актуальным, поскольку менеджер внутренней памяти может задержать фактическое высвобождение блоков памяти на некоторое время. Одно удаление обычно вообще не оказывает никакого эффекта в диспетчере задач.

Единственное, что этого достаточно для мониторинга, - это серьезные утечки памяти, которые угрожают съесть всю системную память. Но даже тогда вы поймаете только симптом, а не причину.

xenotron

Да, это полностью зависит от стратегии распределителя. В некоторых случаях распределитель может предварительно выделить целую кучу, и снаружи вы не увидите никаких изменений. Один из моих любимых трюков-использование кучи модулей для обнаружения утечек и обеспечения соблюдения бюджетов, но в этом случае вы видите постоянное потребление памяти извне. Существует целая куча трюков для отлова ошибок и оптимизации, поэтому нам нужно больше информации от владельца вопроса.

Stefan_Lang

Действительно. Пока мы не получим больше информации, мы не можем сказать, нужны ли ему очки, микроскоп или шпионское стекло.

Albert Holguin

Я никогда не утверждал, что он поймает причину...

Stefan_Lang

Правда. Я не против вашего ответа ;-)

И вообще, мы пока не знаем, что на самом деле ищет автор.

Albert Holguin

Правда, в обоих случаях.

Lakkan

Спасибо за ваш ответ..
Мое требование очень простое: показать утечки памяти в виде графика(Память против времени). [Требуется бесплатный инструмент].