Programando en USER RPL
Depuración de errores en programas

Mario de Lama   malar@arrakis.es
http://www.arrakis.es/~malar

Regresar

Es imposible hacer un programa y que nos salga bien a la primera de cambio. Siempre tendremos unos cuantos errores que nos fastidiarán la cosa y no es eso lo peor si no que żDónde están esos errores? Tardamos más en seguir el código y buscarlos que luego en rectificarlos.

Para ayudarnos en la tarea de la depuración de programas tenemos una potente herramienta en la calculadora, viene explicada en la pag. 29-9 de la guía de usuario. Sólo tenéis que poner el código del programa a revisar en 1:, no lo editéis sólo ponedlo en la pila con RCL o dando a la tecla desplazada a la derecha (tecla verde) del menú donde esté la variable. Ahora debéis de ir al menú PRG NXT RUN (o al PRG CRTL en los que tengáis la S o SX) y presionar DBUG. El programa desaparece de 1: y aparece el anunciador HALT en la línea de estado, esto significa que está cargado en la memoria y si presionamos NEXT podemos ver (también en la línea de estado) la acción que está preparada para ejecutarse. Si presionamos SST se ejecutará. Continuando de esta manera podremos ver paso a paso cómo actúan las instrucciones hasta dar con el error. Siempre podemos manipular la pila para presentar al programa otros argumentos a los requeridos en cada momento, de esta manera podremos juzgar si de esa otra forma el error no se produciría, también podremos ejecutar otros comandos para ver si de esa forma el programa mejoraría y en fin cualquier otra cosa que se nos ocurra.

Si presionamos SST\|v (la tecla del menú SST con la flecha hacia abajo) podemos introducirnos en el código de una subrutina, dicho de otra forma, si nuestro programa constara de un primer programa guardado en una variable y este llama a otro segundo programa guardado en otra variable, pondríamos en 1: el código del primero y tras dar DBUG iríamos depurándolo hasta llegar a la parte donde está la llamada al segundo (su nombre). Si damos SST este programa se ejecutará de una sola vez, como si fuera otro comando más. Si presionamos SST\|v entramos en el código de esta subrutina y podemos seguir presionando SST hasta que se termine y continuemos de nuevo en el programa que lo ha llamado.

Tenemos en el menú el comando HALT que es muy conveniente para insertar en el código del programa cuando estemos seguros de que el error se produce a partir de un determinado punto. En dicho punto colocamos nuestro HALT y corremos el programa como es habitual (sin DEBUG), llegado a HALT el programa se detiene y aparece HALT en la línea de estado. Sólo tenemos que ir al menú RUN e ir depurándolo según se ha comentado antes. Nos ahorramos ejecutar todo el código hasta HALT con SST y si el programa es largo es de agradecer.

Además de esta utilidad, HALT es también necesario cuando usamos la cláusula IFERR y queremos depurar el programa. Si no ponemos HALT después de IFERR no podremos depurar el código que hay entre IFERR ... END. El sistema operativo de la calculadora lo ejecutará como si fuese un sólo comando.

Finalmente nos encontramos (en el menú RUN) con el comando KILL que sirve para terminar un programa. Si lo estamos depurando y ya no queremos seguir porque hemos encontrado el error (o porque la tía Rita a terminado las rosquillas y estamos de catadores) sólo hemos de presionar KILL y el programa termina. También podemos introducirlo en el código del programa para terminar el programa cuando lo deseemos.


Regresar