Ver matrices en debugger de Codeblocks

Iniciado por mariyop, 7 Octubre 2011, 20:15 PM

0 Miembros y 2 Visitantes están viendo este tema.

mariyop

Hola a todos!

¿Hay algún modo de poder ver los valores de los elementos las matrices al usar el debugger de Codeblocks? He probado a añadir watches, pero me sigue mostrando solamente la dirección de memoria del primer elemento.

Gracias

El_Java

Sí que se puede, investiga un poco, porque yo tampoco lo sabia y a partir de tu mensaje he tardado 3 minutos en descubrirlo:
Pon un codigo de prueba, como este:
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main(){
    int *x = new int[2];
    x[0] = 100;
    x[1] = 222;

    return 0;
}


Coloca el breakpoint antes del return 0;
Haz debug y haz visible los watches, luego te aparecerá algo parecido a esto: "x = (int *)0x0230b4", haz click derecho sobre el y pincha en dereference pointer 'x' y te saldra el valor de x[0]

Si no, puedes hacerlo mucho más sencillo, dentro de la ventana watches haz click derecho y "add watch", en keyword pon la variable que quieres ver, por ejemplo, "x[1]" y ya está.

Un saludo.

mariyop

Gracias, pero mis matrices pueden llegar a ser de 1000x1000. ¿Hay alguna manera de verlas de tirón sin tener que añadir los watches 1 a 1?

LearningSpanishProgrammer

En su caso, 1000x1000 es muy muy grande para el debugger (mismo en el Eclipse o otra IDE), te recomiendo que busque una manera de grabalo en un fichero.
Estoy aprendiendo español, y tu estas aprendiendo programación

mariyop

#4
¿Cuál sería la dimensión máxima que podría verse en el debugger (si es que se puede)? Para que me entendáis, también programo en Matlab, y ahí puedes ver la matriz completa (aparece como en una tabla). A esto es a lo que me refiero. ¿Se puede hacer con Codeblocks de algún modo? Porque colocar watches uno por uno no me parece lógico

El_Java

Si que se puede, cuando estés haciendo el debug, en la pestaña Debugger (la de la tuerca azul de debajo del editor) ahi una linea de comandos no?
Pues escribe:
output 'variable''inicial'@'tamaño' No se si el significado es justo asi, lo he tenido que deducir, pero por ejemplo, para ver los 10 primeros datos de un array 'x' tendrias que poner:
output x[0]@10 y te saldria algo como esto:
{100, 200, 300, 400, 500, 600, 700, 800, 900, 1000}
En la linea de comandos puedes ver los comandos poniendo help, ademas, existe la funcion sizeof(variable) para facilitar el tamaño.

Un saludo.

mariyop

Ok, gracias. Lo probaré
Gracias por vuestra ayuda