2012-01-10 10 views
10

Sé que puede imprimir una matriz en gdb, p. Ej.C tamaño de matriz mediante gdb

(gdb) p *[email protected] 

¿Hay un comando gdb que le diga su longitud, p. un acceso directo a mano para escribir algo como:

(gdb) p sizeof(array)/sizeof(int) 

En el caso en el que la matriz se ha definido en tiempo de compilación y desea comprobar que

Respuesta

12

Puede usar ptype para saber el tipo de un símbolo.

Para int array[5],

(gdb) ptype array 
type = int [5] 
+0

buen comando ... gracias –

+0

eso es justo lo que estaba buscando .. – bph

+0

trabajó para Fortran también – wander95

11

Si se trata en realidad define como una matriz, por ejemplo,

int array[5]; 

Entonces sí, se puede usar lo que ha escrito, aunque de una manera mejor y más general es:

(gdb) p sizeof(array)/sizeof(*array) 

Esto no asume el tipo de la matriz.

Si la variable se define como un puntero, entonces no.

+0

buen punto, que es más genérico - pensé que puede haber algún acceso directo GDB para eso? ¿o posiblemente puedes definir el tuyo de alguna manera? – bph

+2

@Hiett Bueno, si imprime la matriz, imprimirá todos los valores. Más allá de eso, no sé. – Kevin