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
Où 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:
- Créez une UDV et définissez sa valeur et son type sur une variable integer locale.
AP1 : définissez #myint = nTotalSoFar - Incrémenter l'UDV.
AP2 : #monint++ - 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
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) |