web-dev-qa-db-fra.com

Comment afficher les champs d'une structure dans GDB?

Je suis tombé sur une structure appelée ngx_http_variable_value_t dans ma session GDB et j'aimerais imprimer les champs qu'il a dans la console.

Est-ce possible?

57
prismofeverything

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

103
Nate

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

57
LnxPrgr3

set print pretty on

Cette option donne également des retours à la ligne et un retrait pour p *my_struct_pointer.

Lequel préfères-tu:

$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"
  },
}

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

screenshot

Avertissement: je suis le développeur de gdbgui

5
cs01

Je ne l'ai fait que par le biais de frontaux graphiques pour gdb. Trouvé cette entrée dans les documents en ligne de gdb. J'espère que ça aide. Je crois que cela nécessitera que le code ait été créé avec des informations de débogage incluses.

ptype [arg] ptype accepte les mêmes arguments que whatis, mais affiche une description détaillée du type, au lieu du seul nom du type.

Débogage avec GDB: symboles

2
Dave L Delaney

Je voudrais jeter un oeil à débogueur d'affichage de données .

1
gnud
  p *((struct my_struct*) variable)

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

0
Pragadeesh waran