90 votes

Comment afficher les champs d'une structure dans GDB ?

J'ai trouvé une structure (appelée ngx_http_variable_value_t) dans ma session GDB (débogueur) et j'aimerais imprimer les champs qu'elle contient dans la console.

C'est possible ?

162voto

Nate Points 1986

Vous pouvez utiliser la commande GDB ptype pour imprimer la définition d'une structure ou d'une classe.

De plus, utilisez ptype /o pour imprimer des décalages et des tailles de tous les champs dans une structure (comme pahole).

68voto

LnxPrgr3 Points 1557

Si vous avez des symboles de débogage intégrés, vous devriez simplement pouvoir imprimer la valeur : print variable print *variable s'il s'agit d'un pointeur vers une structure.

29voto

Ciro Santilli Points 3341

set print pretty on

Cette option donne également de nouvelles lignes et une indentation pour p *my_struct_pointer.

Que préférez-vous :

$2 = {path = {mnt = 0xffff8800070ce1a0, dentry = 0xffff880006850600},last = {{{hash = 3537271320, len = 2}, hash_len = 12127205912}, name = 0xffff88000659501c "../b.out"}

ou :

$3 = {
  path = {
    mnt = 0xffff8800070ce1a0, 
    dentry = 0xffff880006850600
  }, 
  last = {
    {
      {
        hash = 3537271320, 
        len = 2
      }, 
      hash_len = 12127205912
    }, 
    name = 0xffff88000659501c "../b.out"
  },
}

8voto

cs01 Points 2100

En plus d'utiliser l'option de ligne de commande, vous pouvez également utiliser des débogageurs graphiques. Je suggère gdbgui, mais il y en a pas mal dehors.

screenshot

Disclaimer : Je suis le développeur de gdbgui

5voto

  p *((struct my_struct*) variable)

Cela vous aidera à imprimer les détails de struct dans gdb

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X