Linux -- это интересно

Valgrind


Valgrind — набор инструментов для выявления проблем при работе с памятью, обнаружения утечек памяти и профилирования.

Создавался Valgrind как инструмент для отладки использования памяти в GNU / Linux системах архитектуры x86, но позднее проект развился в обобщённый фреймворк для создания инструментов динамического анализа использования памяти, профилирования (сбора характеристик работы приложений) и поиска ошибок связанных с синхронизацией в многопоточных приложениях.

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

Основным модулем Valgrind является memcheck, он обеспечивает обнаружение утечек памяти и прочих ошибок связанных с неправильной работой с областями памяти. Модуль cachegring анализирует выполнение кода, собирая данные (статистику) по всему приложению, отдельных функций и строк кода.

Модулем callgring анализируются вызовы функций, что позволяет построить древо вызова функций и соответственно проанализировать узкие места в работе приложения.

Модуль massif анализирует выделение памяти различными частям приложения, модуль helgrig анализирует выполняемый код на наличие различных ошибок синхронизации, при использовании многопоточного кода.

Valgrind достаточно проста в использовании, необходимые функции задаются опциями из командной строки, для исследуемого приложения никакой специальной подготовки не требуется. Анализируемое приложение запускается, с заданными аргументами (если требуется) и для него будет проведён поиск утечек памяти.

По умолчанию Valgrind запускает модуль memcheck, но пользователь может самостоятельно указать выполняемый модуль. Для облегчения использования можно часто используемые опции задать в конфигурационном файле (~/valgrindrc) и их не придётся вводить при каждом запуске (некоторое количество опций одинаковы для всех модулей).

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

Подробные данные записываются в файл (massif.out.), для их анализа может использоваться встроенная консольная утилита ms_print, выдающая данные в виде ASCII-графиков (или сторонние приложения, например Massif Visualizer).

Valgrind входит в состав практически всех GNU / Linux систем и хорошо документирована, имеется некоторое количество модулей считающихся экспериментальными (не очень стабильными), также пользователь может самостоятельно создавать модули анализирующие выполняемый код.

Лицензия: GNU General Public License version 2.0 (GPLv2)

Домашняя страница

Оставьте комментарий!
Используйте нормальные имена.Войти через loginza
Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



 
(обязательно)