Debugging 如何让GDB在GLib断言失败时中断?

Debugging 如何让GDB在GLib断言失败时中断?,debugging,gdb,glib,Debugging,Gdb,Glib,在我没有编写的大量代码中(但我正在尝试调试),GLib库中的断言失败: (process:31987): GLib-CRITICAL **: g_hash_table_lookup: assertion `hash_table != NULL' failed 然而,GDB和代码仍在继续。我希望GDB在这个断言失败的地方进行中断,以便我能够找出它失败的原因。我没有得到更多关于这个断言的信息。有没有办法让GDB在出现这种故障时中断?在g\u log()上中断。这涵盖了所有情况,如g_warning

在我没有编写的大量代码中(但我正在尝试调试),GLib库中的断言失败:

(process:31987): GLib-CRITICAL **: g_hash_table_lookup: assertion `hash_table != NULL' failed

然而,GDB和代码仍在继续。我希望GDB在这个断言失败的地方进行中断,以便我能够找出它失败的原因。我没有得到更多关于这个断言的信息。有没有办法让GDB在出现这种故障时中断?

g\u log()上中断。这涵盖了所有情况,如
g_warning()
g_critical()
,等等。

您应该添加如下环境变量:

G_DEBUG=fatal_warnings gdb ...

重复:但这个问题更清楚,所以我投票关闭另一个。有用的gdb命令是:
break g\u log if log\u level==g\u log\u level\u CRITICAL
break g g\u log if log\u level==g\u log\u WARNING
g\u DEBUG=致命错误
对我不起作用,但是
G_DEBUG=fatal warnings
G_DEBUG=fatal criticals
也是,请检查。gdb的行可以是
gdb--args程序ARG1 ARG2
,然后在gdb内部发出命令:
set env G_DEBUG=fatal criticals
然后
run