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

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

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

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

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


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

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

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


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

Подробные данные записываются в файл (massif.out.

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

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

Вы можете войти под своим логином или зарегистрироваться на сайте.