2012-08-30 10 views
6

Estoy tratando de obtener una impresión formateada de una matriz 2D larga, de ancho 8, de flotadores. Al utilizar el comando x, consigo el array imprimen como tabla de cuatro columnas:Cómo configurar el ancho de la memoria GDB examine (x) o imprima (p) comandos?

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

Al utilizar el comando p, consigo un salida sin formato, el ancho del terminal:

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

Requerido de salida, algo así como:

(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} 

¿Existe una manera simple de formatear la salida para un ancho específico?

Respuesta

0

Uso de secuencias de comandos Python:

creo que esto es bastante estrecha, si es bastante 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

Gracias. No estoy totalmente familiarizado con Python. ¿Se supone que debo escribir esto en el prompt de gdb? – ysap

Cuestiones relacionadas