Rexx - Débogage
Le débogage est une fonctionnalité importante dans tout langage de programmation. Il aide le développeur à diagnostiquer les erreurs, à trouver la cause première et à les résoudre en conséquence. Dans Rexx, l'utilitaire de trace est utilisé pour le débogage. L'instruction de trace peut être implémentée de 2 manières, l'une est le mode batch et l'autre est le mode interactif. Voyons comment implémenter les deux options.
Trace en mode batch
La commande trace est utilisée pour donner un niveau détaillé de chaque commande Rexx qui est exécutée.
La syntaxe générale de l'instruction trace est indiquée comme suit -
Syntaxe
trace [setting]
Où le paramètre peut être l'une des options suivantes -
A - Trace toutes les commandes.
C - Trace uniquement les commandes de l'hôte qui sont envoyées au système d'exploitation.
E - Trace uniquement les commandes de l'hôte qui sont envoyées au système d'exploitation qui ont entraîné une erreur.
F - Trace uniquement les commandes de l'hôte qui sont envoyées au système d'exploitation qui ont entraîné une panne.
I - Ceci fournit un traçage de niveau intermédiaire des commandes Rexx.
L - Cette option est si vous souhaitez étiqueter le traçage au fur et à mesure.
N - Il s'agit de l'option par défaut dans laquelle aucun traçage n'a lieu.
Jetons un coup d'œil à un exemple de la commande trace.
Exemple
/* 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 sortie du programme ci-dessus sera la suivante -
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
À partir de la sortie, vous pouvez voir qu'une trace supplémentaire a été ajoutée à la sortie du programme. Les choses suivantes peuvent être notées à propos de la sortie -
Le numéro de ligne ainsi que l'instruction exécutée sont ajoutés à la sortie de trace.
Chaque ligne exécutée est affichée dans la sortie de trace.
Fonction de trace
La trace peut également être activée à l'aide de la fonction de trace. La syntaxe générale et l'exemple sont présentés ci-dessous.
Syntaxe
trace()
La fonction ci-dessus renvoie le niveau de trace actuel.
Paramètres
Aucun
Valeur de retour
La fonction ci-dessus donne le niveau de trace actuel.
Exemple
/* 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 '
La sortie du programme ci-dessus sera la suivante.
N
This is an incorrect number
La première ligne de N indique que la trace est définie sur Normal.
Définition de la valeur de trace
Le niveau de trace peut être défini avec la fonction de trace. La syntaxe générale et l'exemple sont présentés ci-dessous.
Syntaxe
trace(travel_level)
Paramètres
trace_level - Ceci est similaire aux options disponibles pour définir le niveau de trace.
Valeur de retour
La fonction ci-dessus donne le niveau de trace actuel.
Exemple
/* 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 sortie du programme ci-dessus sera la suivante -
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'
Traçage interactif
Le traçage interactif est dans lequel, le traçage est effectué pendant l'exécution du programme. Tout comme dans un IDE tel que Visual Studio pour .Net, dans lequel vous pouvez ajouter des points d'arrêt et voir comment chaque instruction s'exécute, vous pouvez également voir le programme au fur et à mesure que chaque ligne de code s'exécute.
La syntaxe générale est la suivante -
Syntaxe
trace ?options
Où, les options sont les mêmes pour la commande trace comme indiqué ci-dessous.
A - Trace toutes les commandes
C - Trace uniquement les commandes de l'hôte qui sont envoyées au système d'exploitation.
E - Trace uniquement les commandes de l'hôte qui sont envoyées au système d'exploitation qui ont entraîné une erreur.
F - Trace uniquement les commandes de l'hôte qui sont envoyées au système d'exploitation qui ont entraîné une panne.
I - Ceci fournit un traçage de niveau intermédiaire des commandes Rexx.
L - Cette option est si vous souhaitez étiqueter le traçage au fur et à mesure.
N - Il s'agit de l'option par défaut dans laquelle aucun traçage n'a lieu.
Jetons un coup d'œil à un exemple d'implémentation du traçage actif.
Exemple
/* 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 sortie du programme ci-dessus sera comme indiqué dans le programme suivant. La trace s'arrêtera à chaque ligne de code; puis vous devez appuyer sur le bouton Entrée pour passer à la ligne de code suivante.
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'