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 :
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}
/
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 paramètres peuvent être préfixés par UpsDbg.
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.
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=Non
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 :
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
Par défaut, le dialogue n'est pas tracé.
TracerMiseAuPoint=Oui
URIMiseAuPoint=UpsTcp://soleil:1649
; -------------------------------------------------------------------
; 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
Source Composant "Exemple de mise au point" Version 4.0.0;
Variable
/******/
AGlobal : Booleen;
BGlobal : ComparaisonObjet;
CGlobal : Entier;
DGlobal : Reel;
EGlobal:Caractere;
/****************************************************************/
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
/******/
ALocal : Booleen;
BLocal : ComparaisonObjet;
CLocal : Entier;
DLocal : Reel;
ELocal : Caractere;
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
/******/
ALocal : Booleen;
BLocal : ComparaisonObjet;
CLocal : Entier;
DLocal : Reel;
ELocal : Caractere;
Reponse : Entier;
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
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.
-->essai.upl:?:Principal();
-->essai.upl:113:F(A=Vrai,B=2,C=10,D=11.22,E="coucou");
<--essai.upl:72:F(A=Faux,B=4,C=1110,D=1111.22,E="guten tag") Retourner 0;
<--essai.upl:122:Principal() Exception DivisionParZero;