Valgrind является гибким инструментом для отладки и профилирования исполняемых файлов Linux-x86. Инструмент состоит из ядра, которое программно обеспечивает искусственный процессор x86, и ряда «оболочек», каждая из которых является отладочным или профилирующим инструментом. Архитектура модульная, так что можно легко создавать новые «оболочки», не нарушая существующую структуру.
Наиболее полезной «оболочкой» является memcheck
«Оболочка» memcheck
malloc/new/free/delete перехватываются. В результате memcheck может обнаружить следующие проблемы• Использование неинициализированной памяти.
• Чтение/запись в память после ее освобождения.
• Чтение/запись за границей выделенного malloc
• Чтение/запись в ненадлежащие области стека.
• Утечки памяти, когда указатели на выделенные malloc
• Несоответствующее использование malloc/new/new[]
free/delete/delete[].• Некоторые неправильные употребления pthreads
Проблемы, подобные этим, могут быть трудно обнаруживаемыми другими средствами, часто остающимися необнаруженными в течение длительного времени и вызывающими редкие, трудные для обнаружения отказы.
Другие «оболочки» более специализированы:
• cachegrind
• addrcheck
memcheck за исключением одной детали — она не проверяет неинициализированные данные. Все остальные проверки — главным образом, точная проверка адресов — по-прежнему проводится. Обратной стороной этого является то, что вы не перехватываете ошибки неинициализированных данных, которые может найти memcheck.Но положительная сторона значительна: программы работают почти в два раза быстрее, чем с memcheck
• helgrind
Наконец, руководство отмечает: