Справочное описание GObject |
---|
Схема подсчёта ссылок используемая в GObject действительно решает многие проблемы управления памятью, но также добавляет новые ошибки в исходный код. В большинстве приложений, найти точно где счётчик ссылок Object может быть обработан не правильно, очень сложно. Хотелось бы надеяться что существующий инструмент с именем refdbg/ может использоваться для автоматического отслеживания недопустимого кода имеющего отношение к подсчёту ссылок. Это приложение перехватывает вызовы подсчёта ссылок и пытается обнаружить недопустимое поведение. Она поддерживает механизм фильтрации правил позволяя вам отслеживать только интересующие вас объекты и может использоваться совместно с gdb.
Помните что если GObject скомпилирован с параметром --enable-debug=yes
,
это экспортирует переменную прерывания программы в случае ошибки
static volatile GObject *g_trap_object_ref;
Если установлено в не-NULL значение, g_object_ref() и g_object_unref() будут перехвачены когда получат вызов с таким значением.