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)
Вы можете войти под своим логином или зарегистрироваться на сайте.