2013-12-09 4 views
2

Кто-нибудь знает какие-либо инструменты или методы для обнаружения утечек памяти при использовании GLib и GDBus? Я относительно новичок в использовании обеих библиотек и считаю, что я правильно использую API, но было бы замечательно, если бы был инструмент, который я мог бы использовать, чтобы подтвердить, что я правильно очищаю свои ресурсы. Я запускал свой код с помощью различных программ типа lint, но они, вероятно, не обнаруживают ничего, отвлеченного в библиотеку.Инструменты статического анализа для GLib и GDBus

Я ищу инструмент, специально предназначенный для GLib или GDBus, или инструмент, который я мог бы использовать для этих библиотек? Возможно, есть даже некоторые фреймы времени компиляции, которые я могу установить для GLib или GDBus?

ответ

3

Я только недавно сделал некоторые вуду с бойким/gdbus/libsoup и из моего опыта VALGRIND и Valgrind/массив сделать очень хорошую работу (хотя на самом деле не статический анализ, но анализ выполнения).


Valgrind (использование таНос даже для g_slice_alloc/g_slice_new, делает VALGRIND менее запутанными, Gc дружественным аннулирует все GLib внутренних указателей)

G_DEBUG=gc-friendly G_SLICE=always-malloc valgrind ./yourapp 

Там будут еще ложные срабатывания в выводе - используйте файл supression, чтобы скрыть их.


массива (модули использования резидентов, чтобы предотвратить много шума)

G_DEBUG=resident-modules valgrind --tool=massif --depth=10 --max-snapshots=1000 --alloc-fn=g_malloc --alloc-fn=g_realloc --alloc-fn=g_try_malloc   --alloc-fn=g_malloc0 --alloc-fn=g_mem_chunk_alloc --threshold=0.01 ./yourapp --your --app --options 

использовать некоторый инструмент визуализации, чтобы сделать выходные массивы читаемым (пару бревен МБ) массив-визуализатор делает хорошую работу

Имейте в виду, что GLIB имеет несколько мегабайт статического выделенного материала (все классы типа GObject)


Если вам нужно самостоятельно отлаживать библиотеки, нет возможности их компиляции с флагами отладки (-g)

Смежные вопросы