Как я могу узнать, где мой код вызывает GLib-GObject-CRITICAL? - PullRequest
4 голосов
/ 15 марта 2010

В случае сбоя приложения C / C ++ со следующим КРИТИЧЕСКИМ, подскажите, пожалуйста, как я могу узнать, где код вызывает ошибку?

Я пытался запустить его в отладчике, пытаясь сделать 'bt, когда программа не работает. Но он не показывает, где находится код, вызывающий КРИТИЧЕСКИЙ:

(process:3155): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.22.3/gobject/gtype.c:2458: initialization assertion failed, use IA__g_type_init() prior to this function

(process:3155): GLib-CRITICAL **: g_once_init_leave: assertion `initialization_value != 0' failed

(process:3155): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.22.3/gobject/gtype.c:2458: initialization assertion failed, use IA__g_type_init() prior to this function

(process:3155): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.22.3/gobject/gtype.c:2458: initialization assertion failed, use IA__g_type_init() prior to this function

(process:3155): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.22.3/gobject/gtype.c:2458: initialization assertion failed, use IA__g_type_init() prior to this function

(process:3155): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(process:3155): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.22.3/gobject/gtype.c:2458: initialization assertion failed, use IA__g_type_init() prior to this function

Ответы [ 3 ]

4 голосов
/ 14 июня 2010

Вы должны передавать --g-fatal-warnings вашему приложению при запуске его внутри gdb.

3 голосов
/ 15 марта 2010

Вы можете взломать g_log, а затем сделать откат назад.

2 голосов
/ 15 марта 2010

Я думаю, что это действительно показывает, где это вызывает проблему (глубже в трассировке стека):

(gdb) bt
#0  0x00da5422 in __kernel_vsyscall ()
#1  0x00c70e15 in pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:122
#2  0x008a5800 in g_once_init_enter_impl () from /lib/libglib-2.0.so.0
#3  0x00800e36 in g_initially_unowned_get_type ()
   from /usr/lib/libgobject-2.0.so.0
#4  0x00271f15 in gtk_object_get_type () from /usr/lib/libgtk-x11-2.0.so.0
#5  0x0036aa4c in gtk_widget_get_type () from /usr/lib/libgtk-x11-2.0.so.0
#6  0x001b8485 in gtk_container_get_type () from /usr/lib/libgtk-x11-2.0.so.0
#7  0x0031b3b5 in gtk_toolbar_get_type () from /usr/lib/libgtk-x11-2.0.so.0
#8  0x0031d717 in gtk_toolbar_new () from /usr/lib/libgtk-x11-2.0.so.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...