40 Depurando

Hay tres versiones de la biblioteca Allegro: el código normal optimizado, con soporte extra para depurar, y una versión para medir el rendimiento. Lea los ficheros readme específicos de cada plataforma para saber cómo instalar y enlazar con estas versiones alternativas. A pesar de que obviamente querrá usar la versión optimizada para la versión final de su programa, puede ser muy útil enlazar con la versión de depuración, porque hará la tarea de depuración más fácil, y porque incluye aserciones que le ayudarán a encontrar errores en su código con antelación. Allegro contiene varias funciones para ayudar en la depuración:


void al_assert(char *file, int line);
Genera una aserción en el fichero en la línea especificada. El parámetro file debe estar codificado en ASCII. Si ha instalado un controlador propio de aserciones lo usa, o si la variable de entorno ALLEGRO_ASSERT escribe un mensaje en el fichero especificado por el entorno, y si no, aborta la ejecución del programa con un mensaje de error. Normalmente usará la macro ASSERT() en vez de llamar directamente a esta función.

Relacionado con: ASSERT, al_trace, register_assert_handler.
void al_trace(char *msg, ...);
Muestra un mensaje de depuración usando una cadena con formato printf() codificada en ASCII. Si ha instalado una función trace propia, será usada, o si la variable de entorno ALLEGRO_TRACE existe se escribirá en el fichero especificado por ésta, en caso contrario se escribirá el mensaje en "allegro.log" en el directorio actual. Normalmente querrá usar la macro TRACE() en vez de llamar directamente a esta función.
Relacionado con: TRACE, al_assert, register_trace_handler.
void ASSERT(condition);
Macro ayudante de depuración. Normalmente se convierte en nada, pero si ha definido DEBUGMODE antes de incluir los ficheros de cabecera de Allegro, comprobará la condición indicada y llamará a al_assert() si ésta falla.
Relacionado con: al_assert, TRACE, register_assert_handler.
void TRACE(char *msg, ...);
register_trace_handler Macro ayudante de depuración. Normalmente se convierte en nada, pero si ha definido DEBUGMODE antes de incluir los ficheros de cabecera de Allegro, pasará el mensaje (que debe estar codificado en ASCII) a al_trace().
Relacionado con: al_trace, ASSERT.
void register_assert_handler(int
(*handler)(char *msg)); register_trace_handler Permite usar una función propia para tratar las aserciones fallidas. A su función se le pasará un mensaje de error formateado codificado en ASCII, y deberá devolver distinto de cero si ha procesado el error, o cero para continuar con las acciones por defecto. Puede usar esto para ignorar aserciones fallidas, o para mostrar mensajes de error en modo gráfico sin abortar el programa.
Relacionado con: al_assert, ASSERT.
void register_trace_handler(int
(*handler)(char *msg)); register_assert_handler Permite usar una función propia para tratar los mensajes de trazado. A su función se le pasará un mensaje de error formateado codificado en ASCII, y deberá devolver distinto de cero si ha procesado el error, o cero para continuar con las acciones por defecto. Puede usar esto para ignorar los mensajes de trazado, para mostrarlos en un monitor monocromo secundario, etc.
Relacionado con: al_trace, TRACE.

Volver al Indice