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