2013-04-25 14 views
5

Sto eseguendo il debug di una libreria C esistente con gdb 7.4
Sto provando ad esaminare una variabile che, sfortunatamente, è stata dichiarata con lo stesso nome come il suo tipo:Come posso esaminare in gdb una variabile che ha lo stesso nome del suo tipo

extern const enum rtx_class rtx_class[NUM_RTX_CODE]; 

Ora non riesco a trovare un modo per esaminare questa variabile. p rtx_class restituisce Tentativo di utilizzare un nome di tipo come espressione, lo stesso con p &rtx_class e p rtx_class[0].
Tuttavia, info var rtx_class funziona e restituisce const rtx_class rtx_class [145] come previsto.

Qualche idea?

+1

per me è bene per le enumerazioni (gdb 7.4), ma per le strutture questo è stato lì per al ong time: http://sourceware.org/bugzilla/show_bug.cgi?id=7737 – dbrank0

risposta

5

Prova questa soluzione alternativa. Per il vostro binario fare qualcosa di simile:

nm your-eseguibile | grep rtx_class

Si dovrebbe ottenere l'indirizzo (diciamo che è 0xabcdef, assumendo questo è variabile globale Poi nel gdb fare qualcosa di simile:

. stampa * (rtx_class *) (0xabcdef + sizeof (rtx_class) * n)

Questo dovrebbe stampare rtx_class [n]. O almeno lo fa nel mio semplice testcase.

+0

Soluzione piacevole. Per me va bene. –

Problemi correlati