LXF87-88:Valgrind
|
|
|
Valgrind 3.2.1
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
- Грэм Моррисон спустился в недра отладки, а путь ему освещал 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
Свойства навскидку
- KCachegrind Чем больше прямоугольник функции, тем больше процессорного времени она съедает
- Библиотечные профили Можно отфильтровывать лишние ошибки с помощью загружаемых профилей.