Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre como es la depuracion de nuestros codigos.

Anuncios

Como todo buen lenguaje de programacion tambien tendremos indicadores de errores porque cuando comencemos a programar nuestros propios proyectos sucedera que no compilara porque no aplicamos algo correctamente u ocurrio algo inesperado, en general tenemos dos tipos de errores:

  • Compilacion o ejecucion
  • Logicos
Anuncios

Los primeros son mas normales y pueden suceder por falta de atencion pero en todo caso al momento de compilarlo nos seran informados en cual linea ocurrieron, sin embargo por lo general en pantalla a medida que trabajemos con el editor veremos una notificacion en pantalla con un signo de un posible error o una falta de declaracion

Anuncios

En este caso tenemos una variable que no la hemos utilizado y el editor nos informa que solo se referencio una vez pero cuando la usemos este icono desaparecera, si bien este icono no impedira que se compile la notificacion puede caer en un error de tipo logico que hablaremos mas adelante, despues tenemos este otro tipo de icono

Anuncios

Este icono nos impedira la compilacion porque el error es grave, si vamos sobre el icono nos dira el tipo de error y si bien este es bastante simple lo use como ejemplo para que vean con cual deben cuidarse, siempre verifiquen el porque del error, por ultimo si lo compilamos y tenemos un error veremos en la parte inferior de la pantalla algo similar a esto

Anuncios

Si siempre se preguntaron por las solapas que aparecerieron abajo son para este tema, en Output siempre van a ver como se va compilando nuestro juego pero si ocurre algun error se movera a Compile Errors y nos dira donde ocurrio, la otra solapa es Syntax Error y se usa para los errores de sintaxis, con esto tenemos cubierto los errores de compilacion o sintaxis pasemos a los siguientes.

Anuncios

Los siguientes son los errores logicos y estos son los peores porque estos ocurren por culpa nuestra y el compilador no nos puede informar antes de compilarlo sino que se apareceran cuando los usemos, no es otro que el famoso y querido Bug, estos pueden ocurrir por intentar acceder a un dato que no iniciamos (la mayoria de las veces), hicimos una operacion ilegal o una mala aplicacion de una funcion, en todos los casos cuando ocurre este tipo de error nos aparecera un cartel como el siguiente

Anuncios

Esto no solo interrumpira la ejecucion del juego sino que nos notificara donde fue el error, en este caso hice una pequeña modificacion para que ante un evento se llame a show_message con una variable que no se definio previamente, por esta razon nos dice: “not set before reading it”, tambien nos informa la linea que causo el error sino tambien en cual objeto fue y la posicion de la linea, como pueden observar unicamente se puede abortar pero tambien podemos copiar el mensaje o limpiarlo, con esto hemos cubierto los dos tipos de errores mas basicos que podemos tener pasemos al siguiente tema.

Anuncios

Depurador

Como todo buen editor disponemos de la posibilidad de poder ver como trabaja nuestro proyecto ya sea en el momento de ejecucion o cuando lo detengamos, para ello en lugar de usar el boton de ejecutar o la opcion Build -> Run, debemos usar la opcion Build -> Debug, esto compilara el proyecto pero tambien nos habilitara el depurador

Anuncios

Para poder ver los recursos debemos usar la opcion del menu Debugger -> Windows -> Resource View, nos habilitara la siguiente opcion

Anuncios

En este caso utilice el ultimo proyecto que vimos y como el objeto jugable es el unico que tiene eventos nos lo muestra en el Resource View, para ver como es la depuracion veamos el siguiente video

Anuncios
Anuncios

En el video no solamente ven como se habilita la depuracion sino como utilizar un breakpoint, y para que nos sirve? Esto es una herramienta util para cuando tenemos un error pero no podemos darnos cuenta porque se genera dicho error, entonces nosotros ponemos este elemento para detener la ejecucion y ver el estado actual del proyecto, por ejemplo tenemos un error que ocurre en la linea 37 de un objeto, nosotros vamos a ese objeto y ponemos este breakpoint en la linea 36, entonces detendra la ejecucion del programa antes del error pero podremos ver como es su estado antes de pasar a la falla, esto nos posibilita poder corregirlo en base a la informacion que tenemos disponible, como pueden observar en el video con las solapas que tenemos disponibles, hablemos del ultimo tema.

Anuncios

Funciones de depuracion

Hasta aqui vimos que es la depuracion pero tambien disponemos de algunas funciones y variables para trabajar en nuestro juego, por ejemplo nosotros usamos una muy interesante como fue show_message, a continuacion veamos un listado de las mas utilizadas:

Anuncios
  • debug_mode, verifica si estamos ejecutando en modo normal (false) o de depuracion (true)
  • get_integer(cadena, default), pide al usuario el ingreso de un numero entero, el primer atributo es para el mensaje a mostrar en la pregunta y el segundo atributo es el valor predeterminado
  • get_string(cadena, default), idem al anterior pero para un texto o cadena
  • show_error(cadena, abortar), muestra un mensaje de error personal con el primer parametro y el segundo parametro es para abortar el juego (true) o no (false)
  • show_message(cadena), muestra un mensaje en pantalla
  • show_message_debug(cadena), muestra un mensaje pero no en pantalla sino en la ventana de compilacion
  • show_debug_overlay(activar), muestra informacion de nuestro equipo en el room del juego, entre los datos que tenemos son del GPU, del recolector de basura, etc, para activarlo deben pasar el valor true o false para desactivarlo
  • code_is_completed(), chequea si compilo correctamente el codigo
  • fps, devuelve la cantidad de steps que completo GameMaker, limitado a la velocidad del room
  • fps_real, idem al anterior pero sin la limitacion de la velocidad del room
Anuncios

Para probar algunos de estas funciones las vamos a probar con nuestro proyecto de las fisicas reales, para ello vamos a ir al objeto del caracter jugable, obj_cj, en el evento Create y agregaremos el siguiente bloque:

if (debug_mode)
{
	show_debug_overlay(true);
	show_debug_message("MODO DEPURACION\n");
	show_message("MODO DEPURACION");
}
Anuncios

Este condicional verifica si esta activo o no el modo de depuracion, en caso de ser verdadero activamos los datos por medio de show_debug_overlay, mostramos un mensaje en la ventana de Output y por ultimo lo mostramos en pantalla, compilemos y veamos que sucede mediante el siguiente video

Anuncios

En el video podemos ver como funciona el codigo que agregamos recientemente, mostrando todo lo que agregamos en el bloque del condicional y por ultimo como no aparece si lo ejecutamos normalmente, con esto hemos completado los aspectos mas basicos sobre como trabajar con la depuracion de nuestros codigos.

Anuncios

En resumen, hoy hemos hablado sobre la depuracion de nuestros codigos, hemos visto como se habilita, que herramientas nos habilita (algunas de ellas), que datos podemos observar, como podemos trabajar con ellos, algunas funciones y variables que tenemos a disposicion, en algunos casos para solamente el modo de depuracion y en otros casos para usar libremente (show_message) y un ejemplo practico para verlo en accion, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.00