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?
Vous pouvez utiliser la commande GDB ptype
pour imprimer la définition d'une structure ou d'une classe.
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.
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.
Avertissement: je suis le développeur de gdbgui
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.
Je voudrais jeter un oeil à débogueur d'affichage de données .
p *((struct my_struct*) variable)
Cela vous aidera à imprimer les détails de la structure dans gdb