Debugging 如何让GDB在GLib断言失败时中断?
在我没有编写的大量代码中(但我正在尝试调试),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
(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