Tomáš Pospíšek's Notizblock

when gdb won't find TypeNode

Today, while debugging a segmentation fault I encountered:

(gdb) print *(GtkRadioButton *)(tool_widgets[0])
$3 = {check_button = {toggle_button = {button = {bin = {container = {widget = {parent_instance = {g_type_instance = {Python Exception <class 'gdb.error'> No type named TypeNode.: 
g_class = }, ref_count = 1, 
                qdata = 0x555555a599f0}, priv = 0x5555559a0600}, priv = 0x5555559a05e0}, priv = 0x5555559a05d0}, priv = 0x5555559a0570}, 
      priv = 0x5555559a0560}}, priv = 0x5555559a0540}

gdb evidently doesn't know what the TypeNode type is.

The thing is, TypeNode is not an exported type defined in a .h file, but is an implementation internal type defined in gtype.c.

So in order to let gdb know about that type we need to get the debug symbols of GLib which uses TypeNode internally:

# apt-get install libglib2.0-0-dbgsym

In order to have access to debug symbols, you need to include the "debug" part of the Debian/Ubuntu repositories in the package sources:

$ cat /etc/apt/sources.list
[...]
deb http://debug.mirrors.debian.org/debian-debug/ buster-debug main
[...]

Tomáš Pospíšek, 2019-01-27

Gewinnerfilm von Taisto und Freunden

"Die Wahrheitspille" von Taisto Pospisek, Antonijo Pekic und Sayana Surestharan.

Jury Preis: Bester Film anlässlich von Cleanfilm 2018.

:-)

Tomáš Pospíšek, 2018-12-22


The next two articles:

Articles