Wie bekomme ich den GDB zu brechen, auf eine GLib-assertion-Fehler?
Irgendwo in einer Masse von code, dass ich nicht schreiben (aber ich versuche zu Debuggen), wird eine assertion fehlschlägt, in die GLib-Bibliothek:
(process:31987): GLib-CRITICAL **: g_hash_table_lookup: assertion `hash_table != NULL' failed
Jedoch, GDB und der code hält an. Ich möchte GDB zu brechen, wo diese Behauptung fehl, so dass ich herausfinden kann, warum es fehlschlägt. Ich bin nicht mehr Informationen darüber, wo diese Behauptung ist. Gibt es einen Weg, um den GDB zu brechen auf eine solche Störung?
- Duplikat von: stackoverflow.com/questions/2450001/..., aber diese Frage wird klarer, so bin ich die Abstimmung zu schließen, dass die anderen ein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Pause auf
g_log()
. Dies gilt für alle Fälle, wieg_warning()
,g_critical()
usw.break g_log if log_level == G_LOG_LEVEL_CRITICAL
undbreak g_log if log_level == G_LOG_LEVEL_WARNING
Sollten Sie eine Umgebungsvariable hinzufügen, wie dies:
G_DEBUG=fatal-errors
ist nicht für mich arbeiten, aberG_DEBUG=fatal-warnings
undG_DEBUG=fatal-criticals
ist, schauen Sie sich auch rest der Optionen. Die Linie für die gdb werden konntegdb --args PROGRAM ARG1 ARG2
und dann innerhalb von gdb-Ausgabe der Befehle:set env G_DEBUG=fatal-criticals
und dannrun