2012-08-30 6 views
6

Sto cercando di ottenere una stampa formattata di un array 2D lungo, di larghezza 8, di float. Quando si utilizza il comando x, vengo matrice stampato come tabella a quattro colonne:Come impostare la larghezza della memoria GDB esaminare i comandi (x) o stampare (p)?

(gdb) x/16f 0x81000000 
0x81000000: 0 0 1 0 
0x81000010: 2 0 3 0 
0x81000020: 4 0 5 0 
0x81000030: 6 0 7 0 

quando si utilizza il comando p, ottengo un output formattato, la larghezza del terminale:

(gdb) p/f *(0x81000000)@16 
$27 = {0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0} 

Richiesto uscita, qualcosa come:

(gdb) x/16f 0x81000000 
0x81000000: 0 0 1 0 2 0 3 0 
0x81000020: 4 0 5 0 6 0 7 0 

o:

(gdb) p/f *(0x81000000)@16 
$27 = {0, 0, 1, 0, 2, 0, 3, 0, 
     4, 0, 5, 0, 6, 0, 7, 0} 

C'è un modo semplice per formattare l'output per una larghezza specifica?

risposta

0

utilizzare script python:

penso che questo è abbastanza vicino, se abbastanza oscura:

python print "\n".join(", ".join(gdb.execute('x/f 0x%x' % a, False, True).split()[-1] for a in range(s, s+32, 4)) for s in range(0x81000000, 0x81000040, 32))

+0

Grazie. Sono assolutamente assolutamente non familiare con Python. Dovrei digitare questo nel prompt gdb? – ysap

Problemi correlati