PDA

Ver la versión completa : Imprimir variables o debug



Weif Raider
18/04/2005, 20:31
Holas... tengo un pequeño problema. No sé cómo imprimir el valor de una variable en alguna pantalla de log o por consola :( q triste!!!!

stoy utilizando el DCFreeDev, y no sé cómo cómo depurar el programa...

el debug no me funciona, pongo breakpoints pero al añadir una watch, no hace nada... ¿en qué pantalla se supone que salen?

En una pantalla de log (debug) pone esto:
Error creating process c:\dev-cpp\projects\ejemplo\binary.elf (error 193)

una ayudita please!!! ;)

Puck2099
18/04/2005, 20:41
Holas... tengo un pequeño problema. No sé cómo imprimir el valor de una variable en alguna pantalla de log o por consola :( q triste!!!!

stoy utilizando el DCFreeDev, y no sé cómo cómo depurar el programa...

el debug no me funciona, pongo breakpoints pero al añadir una watch, no hace nada... ¿en qué pantalla se supone que salen?

En una pantalla de log (debug) pone esto:
Error creating process c:\dev-cpp\projects\ejemplo\binary.elf (error 193)

una ayudita please!!! ;)

Uhm, yo no he usado el DCFreeDev, pero me parece que no hay forma de usar un debugger a no ser que lo hagas con el VC compilando directamente para Windows...

EDITO: Ese error que te da me parece que es en tiempo de compilación, así que si no arreglas no creo que sea posible ni ejecutarlo.

Saludos

Weif Raider
18/04/2005, 20:55
que va, si ejecutarlo lo ejecuta... muevo gráficos y muestra par de cosas en el emu, es decir, que el programa carga sin problemas :(

*****, pues si no se puede depurar, va a ser un infierno esto :(

Puck2099
18/04/2005, 20:58
que va, si ejecutarlo lo ejecuta... muevo gráficos y muestra par de cosas en el emu, es decir, que el programa carga sin problemas :(

*****, pues si no se puede depurar, va a ser un infierno esto :(

Bueno, siempre puedes hacer como yo y depurar en base a "mensajitos" mostrados por pantalla (de la GP32 o el emulador en tu caso).

Para ello usa las funciones de GpTextOut.

Saludos

Croc
18/04/2005, 21:00
Wenas!

Siempre puedes usar la tecnica de ir mostrando el valor de las variables en tiempo de ejecucion. Es muy ortopedico, limitado y lento, xo siempre funciona :). Se pueden mostrar mensajes en una eskina de la pantalla asi:



void LineOut(char *str){
// x, y, txt, color
GpTextOut(NULL, &_gpDraw[_screen], 0, 216, str, 1);
// (0,216) eskina inferior izquierda
}


EDIT: Me ha ganado Puck x 2 minutos... :)

Salu2

Weif Raider
18/04/2005, 21:11
oks, gracias a los 2 por las respuestas... ahora que estoy empezando se agradecen mucho pq es muy jodido, todo es nuevo y se avanza muy despacio...

he probado a crear un fichero y guardar ahí los mensajes, pero no rula :( no entiendo pq pq si es c, debería dejar crear los ficheros :(....

Propeller, sabes a qué se debe esto??? es posible usando tu IDE hacer un debug ???

Gracias!!

Puck2099
18/04/2005, 21:13
oks, gracias a los 2 por las respuestas... ahora que estoy empezando se agradecen mucho pq es muy jodido, todo es nuevo y se avanza muy despacio...

he probado a crear un fichero y guardar ahí los mensajes, pero no rula :( no entiendo pq pq si es c, debería dejar crear los ficheros :(....

¿Has usado las funciones del SDK oficial para acceder al fichero o las propias de C? Si has usado las de C cámbialas por las del SDK que esas creo que no funcionan tal cual.

Saludos

Weif Raider
18/04/2005, 21:15
puck, he usado las de c de toda la vida "stdio.h".

de todas formas, con las del SDK me dejaría guardar un fichero en el HD?? ámo a probá

thnks!

EDIT: No funciona. Supongo que habrá que esxribir en alguna SMC virtual o algo, pero en el HD a pelo no deja.... :( probaré el método de depurar por pantalla XDDDDD

mortimor
18/04/2005, 23:03
Efectivamente deberas utilizar una smc virtual si estas utilizando el emulador para poder acceder a otros archivos.

No deberias tener problemas para acceder a ficheros utilizando las funciones de c si tienes un wraper, asi te ahorras mucho trabajo ;)

Yo me he pasado a x_lib que es mas rapida accediendo a la smc, por lo que me ha comentado Chui, y ademas puedes utilizar todas las funciones de c sin chorradas ni tirando de SDK oficial. Tambien te ahorras el gpstart y demas molestias del SDK oficial :) es ideal :D

Weif Raider
19/04/2005, 00:17
mortimor, cuando dices x_lib te refieres a SDL???

cómo puedo hacer un wraper para poder crear ficheros en el HD?

thnks!

oankali
19/04/2005, 08:52
Si quieres ejemplos de como funcionan las funciones del SDK, mira mi librería RIFF.H (http://www.nekanium.com/gp32/cLibraries.htm).
Y si tienes instalado el VC++ siempre puedes instalar el SDK de Gamepark para Windows tal como lo indica el tutorial (http://www.nekanium.com/gp32/docs.htm) que he preparado al respecto.

Oankali.

Weif Raider
19/04/2005, 09:48
oankali, la librería RIFF es para escribir en la SMC o deja escribir tb un fichero en el HD???

lo probaré de todas formas cuando llegue a casa, gracias! ;)

oankali
19/04/2005, 10:01
oankali, la librería RIFF es para escribir en la SMC o deja escribir tb un fichero en el HD???

lo probaré de todas formas cuando llegue a casa, gracias! ;)

Son solo para escribir en la SMC. Pero solo te las proponía como ejemplo, ya que RIFF es un formato especial de fichero que para depurar no será muy práctico. En cualquier caso, no olvides nunca inicializar la SMC con GpFatInit() antes de cualquier acceso a la SMC.

Para que lo entiendas mejor, si compilas para ARM, o sea que lo pruebas con Geepee32 o directamente en la GP32, no tendrás acceso al disco duro.
Si utilizas el SDK para Windows con VC++, además de las funciones del SDK puedes utilizar las funciones normales del HD, pero solo te servirá para depurar.
Y si ya estás en VC++, pues ya no te hace falta escribir nada en el HD para depurar ya que el VC++ tiene su propio depurador.

Oankali.

mortimor
19/04/2005, 10:33
mortimor, cuando dices x_lib te refieres a SDL???

cómo puedo hacer un wraper para poder crear ficheros en el HD?

thnks!

No son las SDL, pero creo que la ultima version de las SDL esta construida sobre las X_lib.

Lo del wraper es mas complicado, yo tenia uno para las funciones de reserva de memoria y de acceso a ficheros pero no cubria las de dibujo ni las de sonido en la GP32, asi que no esta completo. Lo suyo seria tener uno que si definimos GP32 al compilar compila el programa para GP32 y si definimos WIN32 compile para windows, solo pasar un parametro al makefile :)

Si quieres te paso el wraper que usaba yo con el SDK oficial, te olvidaras de gp_malloc y demas historias :D

Weif Raider
19/04/2005, 10:42
Si no es molestia te agradecería que me lo pasases..... ;)

Eso de compilar para windows o para la gp32 sería la solución, pero con el DCFreeDev no sé cómo hacerlo... :(

javizarim
19/04/2005, 21:13
Mortimor yo también te agradecería si me pasaras ese wraper, estuve buscando ayer por internet pero no encontre ninguno para la gp32, tambien lei en algún post antiguo que chui tenía uno y tambien lo busque pero sin resultado,
Gracias