How do I show what fields a struct has in GDB?

前端 未结 7 1481
不知归路
不知归路 2020-12-22 23:31

I came upon a struct (called ngx_http_variable_value_t) in my GDB (debugger) session and I would like to print what fields it has in the console.

Is tha

相关标签:
7条回答
  • 2020-12-23 00:02

    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

    0 讨论(0)
  • 2020-12-23 00:08

    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

    0 讨论(0)
  • 2020-12-23 00:10

    I would have a look at the Data Display Debugger.

    0 讨论(0)
  • 2020-12-23 00:12

    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.

    0 讨论(0)
  • 2020-12-23 00:15

    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"
      },
    }
    
    0 讨论(0)
  • 2020-12-23 00:19

    You can use the GDB command ptype to print out the definition of a struct or class.

    Additionally, use ptype /o to print offsets and sizes of all fields in a struct (like pahole).

    0 讨论(0)
提交回复
热议问题