2009-10-30 12 views
11

Consideremos el siguiente ejemplo:¿Cómo "mirar" una matriz dinámica de C++ usando gdb?

int size = 10, *kk = new int[size]; 

for (int i = 0; i < size; i++) { 
    kk[i] = i; 
} 

delete [] kk; 

¿Cómo puedo añadir un reloj para toda la gama? Puedo añadir un reloj de uno en uno (kk [0], kk [1] ...), pero como sé que la longitud del arreglo es hay una manera de hacerlo de forma automática? Me refiero a algo así como kk [0..size-1] más o menos.

estoy usando NetBeans IDE junto con cygwin g ++ y GDB.

+1

Empleado La edición en ruso cambia ligeramente el significado de la pregunta, pero el @ en una expresión funciona para los comandos de visualización e impresión. – mkb

+0

¿Desea verlo (romper en lectura/escritura) o imprimirlo cuando se detiene GDB? –

+0

ver (rotura) en toda la gama: http://stackoverflow.com/questions/11004374/watch-a-memory-range-in-gdb –

Respuesta

11

Trate display *[email protected]<size> Desde el doc para el comando de impresión:

@ es un operador binario para el tratamiento de datos consecutivos objetos en cualquier lugar en la memoria como una matriz. FOO @ NUM da una matriz cuyos primera elemento es FOO, cuyo segundo elemento se almacena en el espacio siguiente donde se almacena FOO, etc. FOO debe ser una expresión cuyo valor reside en la memoria.

+0

Nice! Esto es lo que quería :). http://bit.ly/4yYT4V – Keiji

+0

Yo prefiero usar p en lugar de "pantalla", ya que es más fácil de escribir. Lo he agregado como una respuesta separada aquí. – PlagueHammer

+1

"imprimir" y "mostrar" no son el mismo comando. "pantalla" establece un reloj en una variable para que pueda verlo cada vez que recibe un aviso, suponiendo que la variable está en el alcance. – mkb

Cuestiones relacionadas