Paramètres d'Up ! Debugger

Up ! Debugger est l'outil de déverminage des programmes écrits en Up ! 5GL. Ses commandes sont identiques à ses Application Program Interface pour l'utiliser en mode programmation.

Les éléments lexicaux de celles-ci sont sont identiques à ceux d'Up ! 5GL.
La syntaxe de celles-ci sont présentées dans la section Syntaxe des commandes d'Up ! Debugger.
La sémantique de celles-ci sont présentées dans la section Référence d'Up ! Debugger.

Up ! Debugger peut être invoqué soit :

Quel que soit son mode d'invocation, Up ! Debugger possède les mêmes paramètres cités dans la section suivante. La commande est, selon les plates-formes, upsdbg, upsdbg.exe ou upsdbg.com.

Quand Up ! Debugger est lancé en tant que programme indépendant, il faut attendre son chargement, puis lancer le programme tiers à mettre au point.

La communication entre ces processus est définie par le paramètre UpsDbg.URIMiseAuPoint pour Up ! Debugger et le programme tiers. Les valeurs doivent être identiques.

L'intérêt d'utiliser d'Up ! Debugger en tant que programme indépendant est de ne pas parasiter le contenu de la console du programme à mettre au point avec les messages de mise au point.

Pour les programmes générés avec Up ! Compiler, cela nécessite également que l'option MiseAuPoint ait été activée à la génération.

Certains paramètres font référence à des fichiers ou à des chemins d'accès. En ce cas, il est possible d'employer des variables environnement dans l'expression des chemins d'accès. Exemple :

Tmp=${UPS_HOME}/demo/tmp/${UPS_USER}

D'autre part, le séparateur de répertoire est le caractère division / et les noms de fichiers ou de répertoires peuvent utiliser les partitions montées automatiquement par Up ! System.

Les paramètres sont lus successivement dans :

Les valeurs des paramètres comportant des caractères espace doivent être mises entre caractères guillemet " ou entre caractères apostrophe ' .

Pour connaître le source d'Up ! Debugger, merci de se référer à la fiche Source d'Up ! Debugger.

Paramètres d'Up ! Debugger

Up ! Debugger étant un programme Up ! Application System particulier, les paramètres de lancement de Up ! Virtual Technical Machine et celles d'exécution de Up ! Kernel s'appliquent. En revanche, la configuration de Up ! Object Management System est imposée. Elle correspond au fichier ${UPS_HOME}/ini/upssdk.ini.

AttraperException

AttraperException permet d'attraper chaque exception lancée quel que soit le mode de mise au point.

Quand une exception est lancée, Up ! Debugger prend la main de la sorte à inspecter le contexte du programme jusqu'à ce que vous décidiez de continuer l'exécution.

Par défaut, les exceptions sont attrapées.

AttraperException=Non

Entete

Entete permet d'afficher l'en-tête de déverminage précisant la date. Par défaut, l'en-tête est affiché.

Entete=Non

MiseAuPoint

MiseAuPoint permet d'activer le code mise au point inclus dans le programme.

Mode de mise au point.Valeur de l'option.
Pas de mise au point.Aucun
Trace de l'application.TraceApplication
Trace de l'application et le noyau.TraceApplicationEtNoyau
Interactif pour l'application.InteractifApplication
Interactif pour l'application et le noyau.InteractifApplicationEtNoyau
Trace et interactif de l'application.TraceEtInteractifApplication
Trace et interactif de l'application et du noyau.TraceEtInteractifApplicationEtNoyau

Si un mode de trace est activé, le fichier ${UPS_HOME}/log/${UPS_LANGUAGE}/${UPS_APPLICATION}.map en mode mono-utilisateur ou le fichier ${UPS_HOME}/log/${UPS_USER}/${UPS_APPLICATION}.map en mode multi-utilisateur est créé.

Si un mode interactif est activé, l'exécution est suspendue :

En ce cas, l'invite de commandes d'Up ! Debugger permet de saisir des commandes afin d'inspecter le contexte d'exécution.
L'exécution reprend quand la commande ContinuerExecution(); est par exemple saisie.

Si le déverminage est étendu à Up ! Virtual Technical Machine, alors toutes les appels aux Application Program Interfaces (API) correspondant aux procédures, fonctions et méthodes peuvent être inspectés.
En revanche, il n'est pas possible d'y poser un point d'arrêt puisqu'il s'agit de code natif non compilé par Up ! Compiler. Mais il est possible d'inspecter les variables gloables et autres objets.

Par défaut, le mode de mise au point est désactivé.

MiseAuPoint=TraceEtInteractifApplicationEtNoyau

TracerMiseAuPoint

TracerMiseAuPoint permet de tracer tout le dialogue de déverminage interactif dans le fichier ${UPS_HOME}/log/${UPS_LANGUAGE}/${UPS_APPLICATION}-upsdbg.log en mode mono-utilisateur ou le fichier ${UPS_HOME}/log/${UPS_USER}/${UPS_APPLICATION}-upsdbg.log en mode multi-utilisateur.

Par défaut, le dialogue n'est pas tracé.

TracerMiseAuPoint=Oui

URIMiseAuPoint

URIMiseAuPoint permet de rediriger les messages de mise au point vers la console d'Up ! Debugger scruptant l'adresse spécifiée. Par défaut, la console de mise au point reste encapsulée dans le programme.

URIMiseAuPoint=UpsTcp://soleil:1649

Exemple de configuration d'Up ! Debugger

; -------------------------------------------------------------------
; Fichier : upsaps.ini
; Objet : Initialisation d'Up ! Virtual Technical Machine.
;
; Module : Up ! Application System.
; Auteur-Date : DUVAL Jean-Pierre - Novembre 2003.
; -------------------------------------------------------------------
; Observations
;
;
; -------------------------------------------------------------------

[UpsDbg]
AttraperException=Non
Entete=Non
MiseAuPoint=TraceEtInteractifApplicationEtNoyau
TracerMiseAuPoint=Oui
URIMiseAuPoint=UpsTcp://soleil:1649

Exemple de programme à mettre au point

Source Composant "Exemple de mise au point" Version 4.0.0;

Variable
/******/
/****************************************************************/
Fonction F(A : Booleen Entree Sortie, B : ComparaisonObjet Entree Sortie, C : Entier Entree Sortie, D : Reel Entree Sortie, E : Caractere Entree Sortie)
Retourner Entier /* Objet : Fonction utilisant toutes les sortes de paramètres. */
/****************************************************************/
Variable
/******/
Debut
ALocal=Vrai;
BLocal=ComparaisonEgal;
CLocal=10;
DLocal=11.22; ELocal="coucou";
Ecran.Ecrire("P:");
Ecran.Ecrire(Caractere(ALocal));
Ecran.Ecrire(Caractere(BLocal));
Ecran.Ecrire(CLocal);
Ecran.Ecrire(DLocal);
Ecran.Ecrire(ELocal);
Ecran.Ecrire(");

AGlobal=Faux;
BGlobal=ComparaisonApres;
CGlobal=1110;
DGlobal=1111.22;
EGlobal="hello !";
Ecran.Ecrire(Caractere(AGlobal));
Ecran.Ecrire(Caractere(BGlobal));
Ecran.Ecrire(CGlobal);
Ecran.Ecrire(DGlobal);
Ecran.Ecrire(EGlobal);

A=Faux;
B=ComparaisonNul;
C=1110;
D=1111.22;
E="guten tag";
Ecran.Ecrire(Caractere(A));
Ecran.Ecrire(Caractere(B));
Ecran.Ecrire(C);
Ecran.Ecrire(D);
Ecran.Ecrire(E);

Retourner 0;
Fin Fonction

Principal
/*******/
Variable
/******/
Debut
ALocal=Vrai;
BLocal=ComparaisonEgal;
CLocal=10;
DLocal=11.22;
ELocal="coucou";
Ecran.Ecrire("Principal 1:");
Ecran.Ecrire(Caractere(ALocal));
Ecran.Ecrire(Caractere(BLocal));
Ecran.Ecrire(CLocal);
Ecran.Ecrire(DLocal);
Ecran.Ecrire(ELocal);
Ecran.Ecrire(");

AGlobal=Vrai;
BGlobal=ComparaisonApres;
CGlobal=110;
DGlobal=111.22;
EGlobal="hello";
Ecran.Ecrire("Principal 2:");
Ecran.Ecrire(Caractere(AGlobal));
Ecran.Ecrire(Caractere(BGlobal));
Ecran.Ecrire(CGlobal);
Ecran.Ecrire(DGlobal);
Ecran.Ecrire(EGlobal);
Ecran.Ecrire(");

Reponse=F(ALocal,BLocal,CLocal,DLocal,ELocal);
Ecran.Ecrire("Principal 3:");
Ecran.Ecrire(Caractere(ALocal));
Ecran.Ecrire(Caractere(BLocal));
Ecran.Ecrire(CLocal);
Ecran.Ecrire(DLocal);
Ecran.Ecrire(ELocal);
Ecran.Ecrire(");

Ecran.Ecrire(10/Reponse);
Fin Principal

Exemple de dialogue de mise au point

Information UpsDbg-107 : le module 'UpsDbg' est attaché à Up ! Virtual Technical Machine.
Information UpsDbg-107 : le module 'essai' est attaché à Up ! Virtual Technical Machine.
Up ! Debugger version 4.0.0 - Copyright Up ! Company (c) 2003-2005.

Le 7/9/2005 à 16:47:57.

AjouterPointDArret(41,"essai");
Information UpsDbg-109 : le point d'arrêt '1' a été ajouté.
ContinuerExecution();
Information UpsDbg-105 : la tâche 'Principal' est attachée à Up ! Virtual Technical Machine.
Point d'arrêt '1' dans 'essai.upl' ligne '41'.
AjouterPointDArretSurCondition(CGlobal==1110);
Information UpsDbg-109 : le point d'arrêt '2' a été ajouté.
AjouterPointDArretSurExpression(EGlobal=="hello !");
Information UpsDbg-109 : le point d'arrêt '3' a été ajouté.
ContinuerExecution();
Point d'arrêt '2' sur la condition 'CGlobal==1110' dans 'essai.upl' ligne '53'.
DepilerAppel();
EmpilerAppel();
SupprimerPointDArret(2);
Information UpsDbg-112 : le point d'arrêt '2' a été supprimé.
ContinuerExecution();
Point d'arrêt '3' sur l'expression 'EGlobal=="hello !"' de valeur 'Enumere(1)' dans 'essai.upl' ligne '55'.
DesactiverPointDArret(3);
Information UpsDbg-111 : le point d'arrêt '3' a été désactivé.
ExecuterPasAPasRetourner();
ExecuterPasAPas();
ExecuterPasAPas();
ExecuterPasAPas();
ContinuerExecution();
Point d'arrêt sur l'exception 'DivisionParZero' en 'essai.upl' ligne '122'.
ArreterProgramme(1);
Information UpsDbg-115 : le programme 'essai' s'est terminé avec le code retour '1'.
Information UpsDbg-108 : le module 'essai' est détaché d'Up ! Virtual Technical Machine.
Information UpsDbg-108 : le module 'UpsDbg' est détaché d'Up ! Virtual Technical Machine.

Exemple de trace de mise au point

-->essai.upl:?:Principal(); <--essai.upl:122:Principal() Exception DivisionParZero;