在某處的代碼質量,我沒有寫的(但我想調試),斷言在glib庫失敗:如何讓GDB在GLib斷言失敗時中斷?
(process:31987): GLib-CRITICAL **: g_hash_table_lookup: assertion `hash_table != NULL' failed
然而,GDB和代碼不斷去。我希望GDB打破這個斷言失敗的地方,以便我可以找出它失敗的原因。我沒有得到更多關於這個斷言在哪裏的信息。有沒有辦法讓GDB打破這種失敗?
在某處的代碼質量,我沒有寫的(但我想調試),斷言在glib庫失敗:如何讓GDB在GLib斷言失敗時中斷?
(process:31987): GLib-CRITICAL **: g_hash_table_lookup: assertion `hash_table != NULL' failed
然而,GDB和代碼不斷去。我希望GDB打破這個斷言失敗的地方,以便我可以找出它失敗的原因。我沒有得到更多關於這個斷言在哪裏的信息。有沒有辦法讓GDB打破這種失敗?
Break on g_log()
。這包括所有的情況下,像g_warning()
,g_critical()
等
有用的gdb命令是:'如果log_level == G_LOG_LEVEL_CRITICAL',則打斷g_log,如果log_level =打斷g_log,則G_LOG_LEVEL_WARNING'爲 – Mildred 2011-07-06 07:08:32
您應該添加這樣的一個環境變量:
G_DEBUG=fatal_warnings gdb ...
,G_DEBUG =致命錯誤就足夠了 – daf 2014-09-02 15:38:24
'G_DEBUG = fatal-errors'不適用於我,但是'G_DEBUG = fatal-warnings'和'G_DEBUG = fatal-criticals',也檢出[其餘選項](https://developer.gnome.org/glib/stable/glib-running.html#G- DEBUG:CAPS)。 gdb的命令行可以是'gdb --args PROGRAM ARG1 ARG2',然後在gdb中輸入命令:'set env G_DEBUG = fatal-criticals',然後執行'run' – Nelson 2015-03-02 15:21:07
重複的:http://stackoverflow.com/questions/2450001/how-can-i -ind-out-where-is-my-code-causes-glib-gobject-critical但這個問題更清楚,所以我投票結束了另一個。 – ptomato 2011-04-26 08:13:59