Перевод Valgrind — Gnome Live: Как использовать valgrind с приложениями GNOME


Сайт создан в системе uCoz
Вернуться к Оглавлению

 

Автор перевода: Andrey Rjavskov(Rzhavskov) as rjaan <rjaan@yandex.ru>


О переводе

Оригинал статьи можно найти на по этой URL-ссылке, aвтором которой является Chris Kuehl.

Введение

Valgrind является утилитой программиста, которая позволяет отслеживать ошибки, связанные с памятью, в программах на C/C++. Я избавлю Вас от знакомства с ним, информацию о котором Вы сможете найти на этой WEB-странице.

Эта страница включает некоторые подсказки как профессионально использовать valgrind в программах на gtk/gnome. Не стеняйтесь добавлять ваши собственные советы или более расширенную информацию к уже существующей.

Memcheck

Memcheck является основной утилитой valgrind, позволяющей обнаруживать утечку памяти и другие ошибки в управлении с нею. Для запуска gnome-программы под memcheck выполните:

G_SLICE=always-malloc G_DEBUG=gc-friendly valgrind --tool=memcheck --leak-check=full --leak-resolution=high --num-callers=20 --log-file=vgdump your-program

В переменных окружения G_SLICE и G_DEBUG не забудьте выключить оптимизацию памяти в библиотеках glib, чтобы они не сбивали с толку valgrind.

Если отлаживаемая вами программа используетдинамически загружаемых модулей вместе с Gmodule(например, она использует Gmodule систему плагинов ) вы должны использовать G_DEBUG=gc-friendly,resident-modules для того, чтобы удостоверится, что модули не будут выгружены и valgrind не сможет получить имена функций, при записи своего лога:

G_SLICE=always-malloc G_DEBUG=gc-friendly,resident-modules valgrind --tool=memcheck --leak-check=full --leak-resolution=high --num-callers=20 --log-file=vgdump your-program

Эта хорошая идея для сборки ORBit2 с опцией —enable-purify при выполнении GNOME-прилождений поскольку обеспечивает полную инициализацию всех структур данных, что позволяет избежать большинства предупреждений о неинициализированных переменных в CORBA-коде.

После выполнения программы вы можете проинспектировать лог в файле vgdump. Лог содержит список проблем связанных с ипспользованием памяти, а так же в частности утечек памяти.

СОВЕТ ПЕРЕВОДЧИКА: можно запускать одновременно в нескольких gnome-terminal с просмотром лог-файла vgdump процесса выполнение valgrind отладки your-program.

Утечки памяти маркируются тремя способами: definitely lost(определенно утраченные),possibly lost(возможно утраченные) и still reachable(по-прежнему доступные): для начала сконцентрируемся на одной их них, а именно definitely lost, которая непосредственно является частью утечки памяти. Для каждой такой утечки valgrind обеспечивает отслеживание, которое позволит вам явно выявить источник проблемы утечки памяти, в частности, если ваша программа была скомпилирована с отладочными символами, valgrind будет указывать точную строку и файл, где она случилась.

Помните: Если ваш бинарник является в реальности libtool-сгенерированной временной оберткой, а командная строка выше будет выполнять valgrind в вашей командной оболочке, которая возможно не будет знать, что вы хотите. Взамен используйте:

G_SLICE=always-malloc G_DEBUG=gc-friendly libtool —mode=execute valgrind —tool=memcheck —leak-check=full —leak-resolution=high —num-callers=20 —log-file=vgdump your-program

 

Вернуться к Оглавлению


This document is available under the terms of the GNU Free Documentation License.



Сайт создан в системе uCoz