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 support ces fonctionnalités , Points d'Action peuvent modifier la valeur des variables locales et membres primitives, peuvent définir leurs propres « variables définies par l'utilisateur » et modifier l'exécution du programme.
Variables définies par l'utilisateur dans Points d'Action et 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 instructions de condition de plusieurs marqueurs/points d'arrêt
- Peut être facilement vu 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 set
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 en tant que :
- variable définie par l'utilisateur (UDV) telle que #myval
- variable locale ou membre telle que strName ou this.m_strName
- RHS = la valeur à attribuer :
- En tant que variable littérale ou locale
- S'il s'agit d'un littéral, sous la forme de : integer , booléen, virgule flottante, caractère ou string
Commande set - Exemples de variables
Exemples d'UDV |
Exemples de variables locales |
---|---|
définir #mychar = 'a' |
définir ceci.m_nCount=0 |
définir #mystr = "une string " |
définir bSuccess=false |
définir #myint = 10 |
|
définir #myfloat = 0,5 |
|
définir #mytrue = vrai |
commande goto
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, comme 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 provoque un léger retard dans l'exécution du code. Cela peut être perceptible dans les zones de code qui sont exécutées très fréquemment, vous préférerez donc peut-être utiliser la commande jmp dans ce type de 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 provoquent le changement de l'exécution à la ligne 125.
Cependant, l'instruction jmp utilise en interne l'instrumentation pour diriger le programme vers le déplacement de l'exécution, tandis que l'instruction goto utilise des points d'arrêt pour ce faire, ce qui provoque un retard dans le traitement. La différence réside donc dans les performances supérieures de 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 un UDV et définissez sa valeur et son type sur une variable integer locale.
AP1 : définir #myint = nTotalSoFar - Augmenter l'UDV.
AP2 : #monint++ - Diminuer l'UDV.
AP3 : #myint--
Opérations de minuterie
Points d'Action peuvent indiquer le temps écoulé entre deux points. Il n'y a qu'un seul minuteur 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 minuteur est arrêté avec la commande endTimer.
Exemple de conditions Point d'Action
Avec des littéraux et des constantes :
- (#monchar='a')
- (#mystr <> " ")
- (#monint > 10)
- (#monfloat > 0.0)
Avec des variables locales :
- (#myval == this.m_strValue)
- (#myint <> ceci->m_nCount)
- (#myint != ceci->m_nCount)
Instruction Enregistrement
L'enregistrement des instructions peut être utile pour détecter les changements dans un comportement connu ; le point d'exécution (B) qui diverge d'une ou plusieurs exécutions précédentes (A). Les commandes sont :
- recStart - démarre l'enregistrement ou commence la comparaison 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 :
Fichiers de démarrage recspec
Par exemple:
recStart c:\mylogs\onclickbutton.dat
Lorsqu'une commande recStart est rencontrée qui spécifie un fichier, et que ce fichier existe, il est chargé en mémoire et le débogueur entre immédiatement en mode de comparaison.
Expressions
Il n'y a pas de priorité 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 de 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 |
<> - Pas égal != - Pas égal == - Égal = - Égal |
Opérateur d'affectation dans Point d'Action |
= - Affecte RHS à LHS |
Opérateurs Arithmétique dans les expressions conditionnelles |
/ - division + - plus - - moins * - multiplication % - module |
Opérateurs logiques dans les expressions conditionnelles |
AND - les deux doivent être vrais OR - l'un doit être vrai && - les deux doivent être vrais || - il faut que ce soit vrai ^ - OR exclusif (un seul doit être vrai) |