Réserver une Démo

SVP notez : Cette page d’aide n’est pas pour la dernière version d’Enterprise Architect. La dernière aide peut être trouvée ici.

Pré. Proc.

Points d'Action

Points d'Action sont des points d'arrêt qui peuvent effectuer des actions. Lorsqu'un point d'arrêt est atteint, le script Point d'Action est invoqué par le débogueur, et le processus continue à exécuter . Points d'Action sont des outils de débogage sophistiqués et fournissent aux développeurs experts une suite de commandes supplémentaire. Avec eux, un développeur peut modifier le comportement d'une fonction, capturer le point auquel un comportement change et modifier/détecter l'état d'un object . Pour prendre en support ces fonctionnalités , Points d'Action peut modifier la valeur des variables locales et membres primitives, définir leurs propres 'variables définies par l'utilisateur' et modifier l'exécution du programme.

Variables définies par l'utilisateur dans les Points d'Action et les Points d'Arrêt

Variables définies par l'utilisateur (UDV) :

  • Fournir les moyens de définir une primitive ou string UDV dans les instructions Point d'Action
  • Peut être utilisé dans les déclarations de condition de plusieurs marqueurs/points d'arrêt
  • Peut être vu facilement dans la même fenêtre Variables locales
  • Les valeurs finales de tous les UDV sont enregistrées à la fin du débogage.

Dans la syntaxe UDV, le nom UDV :

  • Doit être précédé d'un caractère # (dièse)
  • Est insensible à la casse

Déclarations Point d'Action

Les instructions Point d'Action peuvent contenir des commandes set, des commandes goto et des commandes jmp.

commande de réglage

Ensembles de valeurs variables. Une instruction Point d'Action peut contenir plusieurs commandes 'set', qui doivent toutes précéder toute commande 'goto'.

La syntaxe de la commande 'set' est :

définir LHS = RHS

Où:

  • LHS = le nom de la variable sous la forme :
    - variable définie par l'utilisateur (UDV) telle que #myval
    - variable locale ou membre telle que strName ou this.m_strName
  • RHS = la valeur à affecter :
    - En tant que variable littérale ou locale
    - S'il s'agit d'un littéral, parmi : integer , booléen, virgule flottante, caractère ou string

commande set - Exemples de variables

Exemples de VDU

Exemples de variables locales

set #mychar = 'a'

définir this.m_nCount=0

set #mystr = "une string "

définir bSuccess=false

définir #myint = 10

définir #myfloat = 0,5

définir #mytrue = vrai

aller à la commande

Cette commande bascule l'exécution vers un numéro de ligne différent dans une fonction. Une instruction Point d'Action ne peut contenir qu'une seule commande goto, en tant que commande finale de l'instruction.

La syntaxe de la commande goto est :

aller à L

L est un numéro de ligne dans la fonction actuelle.

La commande goto utilise des points d'arrêt pour atteindre son objectif, ce qui entraîne un léger retard dans l'exécution du code. Cela peut être perceptible dans les régions de code qui sont exécutées très fréquemment, vous pouvez donc préférer utiliser la commande jmp dans un tel code, pour obtenir le même détournement d'exécution mais avec moins de retard.

commande jmp

La commande jmp est effectivement la même que la commande goto .

jmp 125

aller à 125

Ces deux commandes entraînent le passage de l'exécution à la ligne 125.

Cependant, l'instruction jmp utilise en interne l'instrumentation pour ordonner au programme de déplacer l'exécution, tandis que l' instruction goto utilise des points d'arrêt pour ce faire, ce qui entraîne un retard dans le traitement. La différence est donc une performance supérieure pour l'instruction jmp , en particulier lorsque des régions de code sont exécutées très fréquemment.

Opérateurs Integer

Lorsqu'une variable définie par l'utilisateur (UDV) existe et qu'elle est de type int , elle peut être incrémentée et décrémentée à l'aide des opérateurs ++ et --. Par exemple:

  1. Créez une UDV et définissez sa valeur et son type sur une variable integer locale.
    AP1 : définissez #myint = nTotalSoFar
  2. Incrémenter l'UDV.
    AP2 : #monint++
  3. Décrémenter l'UDV.
    AP3 : #monint--

Opérations de minuterie

Points d'Action peut rapporter le temps écoulé entre deux points. Il n'y a qu'un seul temporisateur disponible, qui est réinitialisé ou démarré avec la commande startTimer. Le temps écoulé actuel peut ensuite être imprimé avec la commande printTimer. Enfin, le temps total écoulé est imprimé et le chronomètre s'est terminé avec la commande endTimer.

Exemple de conditions Point d'Action

Avec Littéraux et constantes :

  • (#mychar='a')
  • (#mystr <> " ")
  • (#monint > 10)
  • (#myfloat > 0.0)

Avec Variables Locales :

  • (#myval == this.m_strValue)
  • (#myint <> this->m_nCount)
  • (#myint != this->m_nCount)

Enregistrement instructions

L'enregistrement d'instructions peut être utile pour détecter les modifications d'un comportement connu ; le point d'exécution (B) qui s'écarte d'une ou plusieurs exécutions précédentes (A). Les commandes sont :

  • recStart - démarre l'enregistrement ou commence à comparer si un enregistrement précédent existe
  • recStop - termine l'enregistrement
  • recPause - mettre en pause l'enregistrement
  • recResume - reprend l'enregistrement
La commande recStart commence l'enregistrement des instructions. Les instructions exécutées sont ensuite stockées. Lorsqu'une commande recStop est rencontrée, l'enregistrement est sauvegardé. Il ne peut y avoir qu'un seul enregistrement sauvegardé à la fois entre deux Points d'Action . Lorsqu'un recStart est rencontré et qu'un enregistrement précédent existe, le débogueur commencera à comparer chaque instruction suivante avec son enregistrement. Il pourrait effectuer de nombreuses comparaisons. Si et quand une différence est détectée, le débogueur s'arrêtera et la ligne de code où le comportement a changé sera affichée dans l'éditeur de code. L'itération de la comparaison est également imprimée.

L'enregistrement est stocké en mémoire par défaut, mais il peut également être stocké dans un fichier avec la syntaxe de commande :

recStart filespec

Par exemple:

recStart c:\mylogs\onclickbutton.dat

Lorsqu'une commande recStart est rencontrée et spécifie un fichier, et que ce fichier existe, il est chargé en mémoire et le débogueur passe immédiatement en mode comparaison.

Expressions

Il n'y a pas de préséance implicite dans les expressions conditionnelles Point d'Arrêt , Point d'Action et Testpoint. Dans les expressions complexes, l'utilisation de parenthèses est obligatoire. Voir ces exemples :

Type

Exemple

Exemple Point d'Action UDV

(#myint=1) AND (#mystr="Allemagne")

Exemples de variables locales

(this.m_nCount > 10) OR (nCount%1)

(this.m_nCount > 10) OR (bForce)

Opérateurs d'égalité dans les expressions conditionnelles

<> - Non égal

!= - Non égal

== - Égal

= - Égal

Opérateur d'affectation à Point d'Action

= - Attribue RHS à LHS

Opérateurs Arithmétique dans les expressions conditionnelles

/ - division

+ - plus

- - moins

* - multiplier

% - module

Opérateurs logiques dans les expressions conditionnelles

AND - les deux doivent être vrais

OR - un doit être vrai

&& - les deux doivent être vrais

|| - il faut être vrai

^ - OR exclusif (un seul doit être vrai)