Mi sono imbattuto in una struttura chiamata ngx_http_variable_value_t
nella mia sessione gdb e vorrei stampare quali campi ha nella console. È possibile?Come faccio a mostrare quali campi ha una struttura in gdb?
risposta
È possibile utilizzare il comando gdb "ptype" per stampare la definizione di una struct o di una classe.
Questa è la risposta giusta per esempio "(gdb) ptype tm" "type = struct tm { int tm_sec;.. int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; lungo tm_gmtoff; const char * tm_zone; } " – gaoithe
Cosa sugli offset? –
@ConradMeyer Lo uso per gli offset: '(gdb) p & ((struct foo *) 0) -> membro'. Sarebbe bello avere qualcosa di non-hacky. – domen
Se si dispone di simboli di debug integrati, si dovrebbe essere in grado di stampare il valore: print variable
o print *variable
se si tratta di un puntatore a una struttura.
Sì, stampa * variabile ... ovviamente. – prismofeverything
E se la variabile è un puntatore generico, come un void *, puoi lanciarlo sul tipo necessario, 'print ((MY_STRUCT *) variabile)', o per ottenere un elemento specifico della struttura 'print ((MY_STRUCT *) variabile> my_structure_element' –
Ho fatto questo attraverso front end grafici per gdb. Ho trovato questa voce nei documenti online di gdb. Spero che sia d'aiuto. Credo che ciò richiederà che il codice sia stato creato con le informazioni di debug incluse.
ptype [arg] ptype accetta gli stessi argomenti di whatis, ma stampa una descrizione dettagliata del tipo, anziché solo il nome del tipo.
avrei un'occhiata al Data Display Debugger.
Oltre all'utilizzo dell'opzione della riga di comando, è possibile utilizzare anche i debugger grafici. Suggerisco gdbgui, ma ce ne sono parecchi là fuori.
Disclaimer: io sono l'autore di gdbgui
set print pretty on
Questa opzione dà anche a capo e rientro per p *my_struct_pointer
.
Che si preferiscono:
$2 = {path = {mnt = 0xffff8800070ce1a0, dentry = 0xffff880006850600},last = {{{hash = 3537271320, len = 2}, hash_len = 12127205912}, name = 0xffff88000659501c "../b.out"}
o:
$3 = {
path = {
mnt = 0xffff8800070ce1a0,
dentry = 0xffff880006850600
},
last = {
{
{
hash = 3537271320,
len = 2
},
hash_len = 12127205912
},
name = 0xffff88000659501c "../b.out"
},
}
- 1. Come stampare una struttura C in modo ricorsivo in gdb
- 2. Come faccio a interrompere la continuazione in GDB
- 3. Come assegnare un valore a una struttura con campi bit?
- 4. Python ha una struttura dati a corda?
- 5. Assegnazione dei campi/proprietà in una struttura
- 6. Come faccio a far uscire GDB da un loop?
- 7. Come faccio a cercare in modo efficiente questa struttura gerarchica?
- 8. Come faccio a sapere quale gemma ha una dipendenza specifica?
- 9. Come faccio a selezionare più campi in JQ
- 10. Estrarre i campi di una struttura C
- 11. Specificare quali campi sono indicizzati in ElasticSearch
- 12. Come dichiarare una struttura immutabile con campi pubblici?
- 13. Come faccio a mostrare SQL con Play Framework?
- 14. Quali utili script GDB hai usato/scritto?
- 15. Come faccio a mostrare/nascondere un elemento in YUI come in jQuery?
- 16. PHP ha una struttura dati impostata?
- 17. LaTeX ha una struttura dati array?
- 18. Come faccio a mostrare una proprietà bool come Sì | No nella griglia della proprietà?
- 19. come faccio a mostrare una stringa come contenuto HTML nel modulo web
- 20. come faccio a scorrere i campi di un oggetto?
- 21. Come passare a un breakpoint in gdb?
- 22. java ha una struttura di dati "LinkedConcurrentHashMap"?
- 23. Come stampare una stringa con terminazione null con newline senza mostrare i backslash escape in gdb?
- 24. Come faccio a sapere quali connettori Eclipse M2E ho installato?
- 25. In GDB, come faccio a eseguire un comando automaticamente quando il programma si ferma? (come display)
- 26. Associazione a una struttura
- 27. In GDB, come scoprire chi ha memorizzato un indirizzo nell'heap?
- 28. Python ha una struttura dati linkedList integrata?
- 29. MySQL: come faccio a sapere quali tabelle fanno riferimento a una tabella specifica?
- 30. valori di stampa di tutti i campi di una struttura
Sembra @ risposta di Nate è il migliore. – jww