Шрифт:
К этому времени у вас должно быть ощущение того, как использовать
15.5.2.4. Valgrind: многосторонний инструмент
Инструменты, описанные в предыдущем разделе, все фокусируются на отладке динамической памяти, и это в самом деле является значительной проблемной областью для многих программ. Однако, проблемы динамической памяти не являются единственной разновидностью. Программа Valgrind под лицензией GPL охватывает большое разнообразие проблем, включая те, которые происходят от динамической памяти.
Руководство по Valgrind описывает программу также или лучше, чем можем мы, поэтому мы будем цитировать (и сокращать) его по мере продвижения вперед.
Valgrind является гибким инструментом для отладки и профилирования исполняемых файлов Linux-x86. Инструмент состоит из ядра, которое программно обеспечивает искусственный процессор x86, и ряда «оболочек», каждая из которых является отладочным или профилирующим инструментом. Архитектура модульная, так что можно легко создавать новые «оболочки», не нарушая существующую структуру.
Наиболее полезной «оболочкой» является
«Оболочка»
• Использование неинициализированной памяти.
• Чтение/запись в память после ее освобождения.
• Чтение/запись за границей выделенного
• Чтение/запись в ненадлежащие области стека.
• Утечки памяти, когда указатели на выделенные
• Несоответствующее использование
• Некоторые неправильные употребления
Проблемы, подобные этим, могут быть трудно обнаруживаемыми другими средствами, часто остающимися необнаруженными в течение длительного времени и вызывающими редкие, трудные для обнаружения отказы.
Другие «оболочки» более специализированы:
•
•
Но положительная сторона значительна: программы работают почти в два раза быстрее, чем с
•
Наконец, руководство отмечает:
Valgrind тесно связан с особенностями процессора, операционной системы и, в меньшей степени, компилятора и основных библиотек С. Это затрудняет его переносимость, поэтому мы с самого начала сконцентрировались на том, что мы считаем широко использующейся платформой: Linux на x86. Valgrind использует стандартный механизм Unix '
Если вы используете GNU/Linux на другой платформе или используете коммерческую систему Unix, Valgrind не окажет вам большой помощи. Однако, поскольку системы GNU/Linux на x86 довольно обычны (и вполне доступны), вполне вероятно, что вы сможете приобрести ее с умеренным бюджетом, или по крайней мере, занять на время! Что еще, когда Valgrind нашел для вас проблему, она исправляется для любой платформы, для которой компилируется ваша программа. Таким образом, разумно использовать систему x86 GNU/Linux для разработки, а какую-нибудь другую коммерческую систему Unix для развертывания высококачественного продукта. [181]
181
Все в большей степени для разработки высококачественных продуктов используется также GNU/Linux! — Примеч. автора.
Хотя из руководства Valgrind у вас могло сложиться впечатление, что существуют отдельные команды
Valgrind предусматривает ряд опций. За всеми подробностями мы отсылаем вас к его документации. Опции поделены на две группы; из тех, которые используются с ядром (т. е. работают для всех оболочек), наиболее полезными могут быть следующие:
Запускается с подключенным к процессу GDB для интерактивной отладки. По умолчанию используется
Перечисляет опции.