I came upon a struct called ngx_http_variable_value_t
in my GDB session and I would like to print what fields it has in the console.
Is that possible?
I came upon a struct called ngx_http_variable_value_t
in my GDB session and I would like to print what fields it has in the console.
Is that possible?
You can use the GDB command ptype
to print out the definition of a struct or class.
If you have debugging symbols built in, you should just be able to print the value: print variable
or print *variable
if it's a pointer to a struct.
set print pretty on
This option also gives newlines and indentation for p *my_struct_pointer
.
Which do you prefer:
$2 = {path = {mnt = 0xffff8800070ce1a0, dentry = 0xffff880006850600},last = {{{hash = 3537271320, len = 2}, hash_len = 12127205912}, name = 0xffff88000659501c "../b.out"}
or:
$3 = {
path = {
mnt = 0xffff8800070ce1a0,
dentry = 0xffff880006850600
},
last = {
{
{
hash = 3537271320,
len = 2
},
hash_len = 12127205912
},
name = 0xffff88000659501c "../b.out"
},
}
In addition to using the command line option, you can also use graphical debuggers. I suggest gdbgui, but there are quite a few out there.
Disclaimer: I am the developer of gdbgui
I've only done this through graphic front ends for gdb. Found this entry in gdb online docs. Hope it helps. I believe this will require that the code was created with debugging info included.
ptype [arg] ptype accepts the same arguments as whatis, but prints a detailed description of the type, instead of just the name of the type.
Debugging with GDB:Symbols
I would have a look at the Data Display Debugger.