Rexx - Debug
Il debug è una caratteristica importante in qualsiasi linguaggio di programmazione. Aiuta lo sviluppatore a diagnosticare gli errori, trovare la causa principale e quindi risolverli di conseguenza. In Rexx, l'utilità di traccia viene utilizzata per il debug. L'istruzione trace può essere implementata in 2 modi, uno è la modalità batch e l'altro è la modalità interattiva. Diamo un'occhiata a come implementare entrambe le opzioni.
Traccia in modalità batch
Il comando trace viene utilizzato per fornire un livello dettagliato di ogni comando Rexx che viene eseguito.
La sintassi generale dell'istruzione trace è mostrata come segue:
Sintassi
trace [setting]
Dove l'impostazione può essere una delle seguenti opzioni:
A - Traccia tutti i comandi.
C - Traccia solo i comandi host che vengono inviati al sistema operativo.
E - Traccia solo i comandi host inviati al sistema operativo che hanno generato un errore.
F - Traccia solo i comandi host inviati al sistema operativo che hanno provocato un errore.
I - Fornisce una traccia di livello intermedio dei comandi Rexx.
L - Questa opzione è se desideri etichettare la traccia mentre accade.
N - Questa è l'opzione predefinita in cui non viene eseguita alcuna traccia.
Diamo un'occhiata a un esempio del comando trace.
Esempio
/* 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 '
L'output del programma di cui sopra sarà il seguente:
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
Dall'output è possibile vedere che un'ulteriore traccia è stata aggiunta all'output del programma. Si possono notare le seguenti cose sull'output:
Il numero di riga insieme all'istruzione eseguita viene aggiunto all'output di traccia.
Ogni riga che viene eseguita viene mostrata nell'output della traccia.
Funzione di traccia
Trace può essere abilitato anche con l'aiuto della funzione trace. La sintassi generale e l'esempio sono mostrati di seguito.
Sintassi
trace()
La funzione precedente restituisce il livello di traccia corrente.
Parametri
Nessuna
Valore di ritorno
La funzione sopra fornisce il livello di traccia corrente.
Esempio
/* 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 '
L'output del programma di cui sopra sarà il seguente.
N
This is an incorrect number
La prima riga di N indica che la traccia è impostata su Normale.
Impostazione del valore di traccia
Il livello di traccia può essere impostato con la funzione di traccia. La sintassi generale e l'esempio sono mostrati di seguito.
Sintassi
trace(travel_level)
Parametri
trace_level - Questo è simile alle opzioni disponibili per impostare il livello di traccia.
Valore di ritorno
La funzione sopra fornisce il livello di traccia corrente.
Esempio
/* 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 '
L'output del programma di cui sopra sarà il seguente:
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'
Tracciamento interattivo
La traccia interattiva è in cui la traccia viene eseguita durante l'esecuzione del programma. Proprio come in un IDE come Visual Studio per .Net, in cui puoi aggiungere punti di interruzione e vedere come viene eseguita ciascuna istruzione, allo stesso modo anche qui puoi vedere il programma mentre viene eseguita ogni riga di codice.
La sintassi generale è la seguente:
Sintassi
trace ?options
Dove, le opzioni sono le stesse per il comando trace come mostrato di seguito.
A - Traccia tutti i comandi
C - Traccia solo i comandi host che vengono inviati al sistema operativo.
E - Traccia solo i comandi host inviati al sistema operativo che hanno generato un errore.
F - Traccia solo i comandi host inviati al sistema operativo che hanno provocato un errore.
I - Fornisce una traccia di livello intermedio dei comandi Rexx.
L - Questa opzione è se desideri etichettare la traccia mentre accade.
N - Questa è l'opzione predefinita in cui non viene eseguita alcuna traccia.
Diamo un'occhiata a un esempio di implementazione della traccia attiva.
Esempio
/* 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'
L'output del programma sopra sarà come mostrato nel programma seguente. La traccia si fermerà a ogni riga di codice; quindi è necessario premere il pulsante Invio per passare alla riga di codice successiva.
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'