Журнал LinuxFormat - перейти на главную

LXF87-88:Valgrind

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(викификация, оформление)
 
м (добавлены категории)
 
Строка 1: Строка 1:
[[Категория:Обзоры]]
 
 
 
=Valgrind 3.2.1=
 
=Valgrind 3.2.1=
  
Строка 79: Строка 77:
  
 
* '''Библиотечные профили''' Можно отфильтровывать лишние ошибки с помощью загружаемых профилей.
 
* '''Библиотечные профили''' Можно отфильтровывать лишние ошибки с помощью загружаемых профилей.
 +
 +
[[Категория:Обзоры]]
 +
[[Категория:Valgrind]]
 +
[[Категория:Грэм Моррисон]]

Текущая версия на 21:50, 26 октября 2011

[править] Valgrind 3.2.1

Грэм Моррисон спустился в недра отладки, а путь ему освещал Valgrind, всевидящий ловец ошибок.

За четыре года, прошедшие со дня его выхода в свет, Valgrind стал неотъемлемой частью процесса программирования на C/C++. Этот вклад был отмечен премией Google–O’Reilly Open Source Award на Open Source Conference (OSCon) 2006 года, а Firefox, OpenOffice.org, Opera, KDE, Gnome и Unreal Tournament имели бы куда больше проколов, если бы не Valgrind. И уж конечно, все они были бы медлительнее – кроме, пожалуй, OpenOffice.org (куда уж еще-то?).

У Valgrind нетипичный подход к отладке: он встраивает вашу программу в собственную виртуальную машину и может отследить любую команду и выделение памяти, контролируя каждый регистр и байт. В результате возникают две проблемы. Во-первых, вы привязаны к интерпретации процессора Valgrind’ом, и если ваша программа полагается на специфическую команду процессора, Valgrind обязан ее поддерживать. К счастью, отладчик постоянно совершенствует свой арсенал, и к новейшей версии Valgrind добавлены 64-битные команды AMD и поддержка почти всех команд SSE3, имеющихся в новейших Pentium 4 и Athlon. Трудности могут быть только у тех, кто компилирует программное обеспечение на ультрасовременных процессорах.

Вторая проблема – Valgrind тормозит. С учетом объема работы по слежению за каждым действием вашей программы, это неизбежно, и все же неповоротливость отладчика шокирует. Старт Konqueror в KDE на нашем компьютере с CPU 3 ГГц занял 1,5 минуты (обычно – 3 секунды), а общение с браузером замедлилось раз в 20. Но при этом было отмечено увеличение скорости на 15 % по сравнению с прежней версией Valgrind (3.1.0), так что положение улучшается.

Valgrind не просто указывает на ошибки в вашем собственном ходе, он отмечает таковые во всех библиотеках, которыми вы пользуетесь. Этот список может стать чудовищным: за время типового сеанса генерируются сотни ошибок – даже если ваш код безупречен. Хорошо еще, что вывод можно фильтровать, используя заготовленный профиль. Например, профиль KDE обходит все ошибки, найденные в библиотеках KDE, облегчая вам поиск собственных промашек. Valgrind может форматировать список в виде XML, и с ним можно работать в графической оболочке при помощи отдельной программы Valkyrie или среды разработки KDevelop.

[править] Грызя гранит

Метод виртуальной машины, применяемый Valgrind для контроля памяти, оказался настолько плодотворным, что некоторые другие пакеты инструментов прибрали его к рукам. Среди них Massif для проверки использования памяти; Helgrind для отлова состояний гонки (race) в многопоточном коде; и Cachegrind, отмечающий время, затраченное процессором на каждую из функций.

Процесс невероятно ресурсоемкий, и чтобы извлечь максимум из своего софта, вам понадобится мощная машина и терпение святого. И все же работа с Valgrind неизмеримо проще, чем многонедельный поиск причин периодического краха вашей программы, ведь Valgrind находит такие ошибки, которые больше никто не может отыскать. Для изучения инструментов вам понадобится только время: умения нужно не больше, чем для написания собственного кода. Несмотря на сложность вывода и многочисленность программ, включенных в комплект, программист средних способностей может многому научиться, пропуская свои работы через Valgrind, а для продвинутого программиста это «брат по разуму». LXF

[править] Свойства навскидку

LXF88_Valgrind2.png

  • KCachegrind Чем больше прямоугольник функции, тем больше процессорного времени она съедает

LXF88_Valgrind3.png

  • Библиотечные профили Можно отфильтровывать лишние ошибки с помощью загружаемых профилей.
Персональные инструменты
купить
подписаться
Яндекс.Метрика