Search code examples
cdebugginggdbgnu

Displaying struct values in GDB


In GDB, given a variable that points to a struct, print will display the raw pointer value and x will display the raw bytes pointed to. Is there any way to display the data pointed to as that struct, i.e. a list of fields and their values?


Solution

  • print *variable
    

    If you do that it will display the value of that variable in GDB.
    You also have an option to display the struct with indentation and new lines:

    $1 = {
      next = 0x0,
      flags = {
        sweet = 1,
        sour = 1
      },
      meat = 0x54 "Pork"
    }
    

    For that you need to set the pretty print:

    set print pretty on
    

    If you want to print an array of values you do:

    print *array@len