Rexx - Depuración
La depuración es una característica importante en cualquier lenguaje de programación. Ayuda al desarrollador a diagnosticar errores, encontrar la causa raíz y luego resolverlos en consecuencia. En Rexx, la utilidad de seguimiento se utiliza para depurar. La instrucción de seguimiento se puede implementar de 2 formas, una es el modo por lotes y la otra es el modo interactivo. Veamos cómo implementar ambas opciones.
Seguimiento en modo por lotes
El comando de seguimiento se utiliza para proporcionar un nivel detallado de cada comando de Rexx que se ejecuta.
La sintaxis general de la declaración de seguimiento se muestra a continuación:
Sintaxis
trace [setting]
Donde la configuración puede ser cualquiera de las siguientes opciones:
A - Rastrea todos los comandos.
C - Solo rastrea los comandos del host que se envían al sistema operativo.
E - Solo rastrea los comandos del host que se envían al sistema operativo y que han dado lugar a un error.
F - Solo rastrea los comandos de host que se envían al sistema operativo y que han provocado una falla.
I - Esto proporciona un seguimiento de nivel intermedio de los comandos de Rexx.
L - Esta opción es si desea etiquetar el rastreo a medida que ocurre.
N - Esta es la opción predeterminada en la que no se realiza ningún seguimiento.
Echemos un vistazo a un ejemplo del comando trace.
Ejemplo
/* Main program */
trace A
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then signal msg
say 'This is a whole number'
return 0
msg :
say ' This is an incorrect number '
La salida del programa anterior será la siguiente:
5 *-* n = 100.45 if datatype( n, wholenumber ) then signal msg
7 *-* say 'This is a whole number
This is a whole number
8 *-* return 0
En el resultado, puede ver que se agregó un seguimiento adicional al resultado del programa. Se pueden observar las siguientes cosas sobre la salida:
El número de línea junto con la declaración ejecutada se agrega a la salida de seguimiento.
Cada línea que se ejecuta se muestra en la salida de seguimiento.
Función de seguimiento
El rastreo también se puede habilitar con la ayuda de la función de rastreo. La sintaxis general y el ejemplo se muestran a continuación.
Sintaxis
trace()
La función anterior devuelve el nivel de seguimiento actual.
Parámetros
Ninguna
Valor devuelto
La función anterior proporciona el nivel de seguimiento actual.
Ejemplo
/* Main program */
say trace()
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then signal msg
say 'This is a whole number'
return 0
msg :
say 'This is an incorrect number '
El resultado del programa anterior será el siguiente.
N
This is an incorrect number
La primera línea de N indica que la traza se establece en Normal.
Configuración del valor de seguimiento
El nivel de seguimiento se puede configurar con la función de seguimiento. La sintaxis general y el ejemplo se muestran a continuación.
Sintaxis
trace(travel_level)
Parámetros
trace_level - Esto es similar a las opciones disponibles para configurar el nivel de seguimiento.
Valor devuelto
La función anterior proporciona el nivel de seguimiento actual.
Ejemplo
/* Main program */
say trace()
current_trace = trace('A')
say current_trace
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then
signal msg say 'This is a whole number'
return 0
msg :
say ' This is an incorrect number '
La salida del programa anterior será la siguiente:
N
4 *-* say current_trace
N
6 *-* n = 100.45
7 *-* if \ datatype( n, wholenumber ) then
8 *-* signal msg
12 *-* say 'This is an incorrect number'
'This is an incorrect number'
Rastreo interactivo
El rastreo interactivo es donde el rastreo se lleva a cabo mientras se ejecuta el programa. Al igual que en un IDE como Visual Studio para .Net, en el que puede agregar puntos de interrupción y ver cómo se ejecuta cada declaración, de manera similar, aquí también puede ver el programa a medida que se ejecuta cada línea de código.
La sintaxis general es la siguiente:
Sintaxis
trace ?options
Donde, las opciones son las mismas para el comando trace como se muestra a continuación.
A - Rastrea todos los comandos
C - Solo rastrea los comandos del host que se envían al sistema operativo.
E - Solo rastrea los comandos del host que se envían al sistema operativo y que han dado lugar a un error.
F - Solo rastrea los comandos de host que se envían al sistema operativo y que han provocado una falla.
I - Esto proporciona un seguimiento de nivel intermedio de los comandos de Rexx.
L - Esta opción es si desea etiquetar el rastreo a medida que ocurre.
N - Esta es la opción predeterminada en la que no se realiza ningún seguimiento.
Echemos un vistazo a un ejemplo de implementación de rastreo activo.
Ejemplo
/* Main program */
trace ?A
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then
signal msg
say 'This is a whole number'
return 0
msg : say 'This is an incorrect number'
La salida del programa anterior será como se muestra en el siguiente programa. La traza se detendrá en cada línea de código; luego debe presionar el botón Enter para pasar a la siguiente línea de código.
This is an incorrect number
+++ "LINUX COMMAND /home/cg/root/5798511/main.rex"
5 *-* n = 100.45 if datatype( n, wholenumber ) then
+++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++
6 *-* signal msg
10 *-* msg :
10 *-* say 'This is an incorrect number'