Sentencia DEBUG

La sentencia DEBUG invocará al trazador (o debugger) interactivo cuando se ejecute.

Se suele utilizar para depurar programas, es decir, para encontrar posibles errores que tengan los programas. Se suele poner, en ocasiones, en los siguientes puntos.

- Donde se quiera comprobar que una parte del programa ha hecho lo que se esperaba que hiciera; tras ejecutarse dicha parte, DEBUG invocará al trazador, desde donde pueden comprobarse todos los procesos activos y el valor de todas sus variables.

- Cuando no se está muy seguro de si algo puede suceder en un programa, se puede poner esta sentencia en dicho punto, para que nos avise en caso de que suceda.

Esta sentencia se pone únicamente de forma temporal hasta que se localiza el error buscado; una vez encontrado ya no es necesaria la sentencia por lo que se puede quitar del programa, ya que por lo demás, no tiene ningún otro efecto.

Ejemplo:
PROGRAM mi_juego;
BEGIN
    // ...
    IF (x<0)
        DEBUG;
    END
    // ...
END


En este ejemplo se comprueba, en un determinado punto del programa, que la coordenada x del proceso no sea un número negativo (menor que cero); si esto sucediera, se invocará al trazador para poder investigar por qué ha sucedido.

Cuando se ejecuta esta sentencia se abre un cuadro de diálogo que nos ofrece las siguientes opciones:

- Desabilitar la sentencia DEBUG, para que no vuelva a activarse en esta ejecución del programa.

- Detener el programa y entrar en el trazador, para poder examinar todos los procesos y sus variables.

- O terminar de inmediato la ejecución del programa, regresando a la edición del mismo en el entorno gráfico de ventanas.

Además, si se pulsa la tecla de escape ESC en dicho cuadro, simplemente se ignorará dicha sentencia DEBUG y se continuará ejecutando el programa normalmente.


Cuando se ejecuta un programa desde el entorno gráfico de ventanas, puede invocarse al trazador en cualquier instante pulsando la tecla F12.

Al invocarse de esta forma al trazador, el programa será interrumpido siempre justo antes de empezar a procesar una nueva imagen, estando todos los procesos por ejecutar antes de la próxima visualización.


Ver: Sintaxis