L'objet de sonde Fragment

L'objet de sonde Fragment est une spécification de logique d'une sonde. Il contient le code source Java qui sera exécuté.

Au moins un objet Fragment est obligatoire. Il contient l'objet Code et tous les éléments de données qui sont référencés par le code source de l'objet Code. Une sonde peut contenir plusieurs objets Fragment, mais deux objets Fragment ne peuvent pas avoir le même type.

L'objet Fragment comprend la propriété suivante :
Propriété Description
type Obligatoire. Pour les sondes de méthode, il doit s'agir de entry, exit, catch, staticInitializer ou de executableUnit. Pour les sondes de site d'appel, il doit s'agir de beforeCall ou de afterCall. Vous ne pouvez pas mélanger des fragments de méthode et des fragments de site d'appel dans une seule et même sonde.
Le tableau suivant répertorie et décrit les types de fragments et indique le type de sonde dans lequel chaque fragment peut être utilisé :
Type de fragment Type de sonde Description
entry Méthode Les fragments entry sont exécutés à l'entrée de méthode. Les fragments entry ne seront pas exécutés pour des méthodes insérées dans la classe par Probekit.
exit Méthode Les fragments exit sont exécutés à la sortie de méthode ; que ce soit une sortie normale, lorsque la méthode émet une exception, ou lorsqu'une exception émise se propage en dehors de la méthode. Les fragments exit ne seront pas exécutés pour des méthodes insérées dans la classe par Probekit.
catch Méthode Les fragments catch sont exécutés au début d'une clause catch de la méthode ou au début d'une clause finally qui est exécutée en résultat d'une exception.
staticInitializer Méthode Les fragments staticInitializer sont exécutés dans l'initialiseur de classe de chaque classe à sonde. Si la classe ne comprend pas déjà d'initialiseur statique, il en sera créé un. Pour plus d'informations, consultez Le fragment de sonde staticInitializer.
executableUnit Méthode Les fragments executableUnit sont exécutés avant chaque unité exécutable de code dans des méthodes correspondant à la spécification de cible et de filtre de la sonde, et dont le code source est disponible. Si la méthode ne comprend pas d'informations de ligne source, elle apparaîtra comme n'ayant qu'une seule unité exécutable numérotée zéro. Pour plus d'informations, consultez Le fragment de sonde executableUnit.
beforeCall callsite Les fragments beforeCall sont exécutés dans la méthode appelante immédiatement avant que la méthode cible ne soit appelée. Incorrect pour les sondes de méthodes.
afterCall callsite Les fragments afterCall sont exécutés dans la méthode appelante immédiatement après la sortie de la méthode cible, que ce soit une sortie normale ou lorsque la méthode cible émet une exception. Incorrect pour les sondes de méthodes.
Notes :
  • Lorsque des sondes sont appliquées aux méthodes déclarées synchronized, le code des fragments entry, exit et executableUnit n'est pas protégé de manière sûre d'une exécution simultanée sur plusieurs unités d'exécution. Par exemple, un fragment entry et les premiers fragments executableUnit peuvent être exécutés avant qu'une logique de synchronisation de la méthode n'obtienne un verrouillage, et un fragment exit peut être exécuté après que le verrouillage a été levé.
  • Une sonde peut comprendre plusieurs fragments qui s'appliquent au même emplacement d'une méthode ; par exemple, un fragment entry et le premier emplacement de executableUnit. Un autre exemple est un fragment catch et son emplacement de executableUnit associé puisque les clauses catch gérant l'exception représentent toujours le début d'une nouvelle unité exécutable. Dans ces cas, le code du fragment executableUnit sera exécuté après le code du fragment entry ou catch. Une conséquence est telle que les fragments entry, le cas échéant, seront toujours exécutés avant d'autres types de fragments.
Exemple
<fragment type="entry">
   <data . . . />
   <code>
      . . . 
   </code>
</fragment>

Contenu par
L'objet Probe

Sujet parent : Références concernant les éléments Probekit

Référence associée
Exemples de Probekit
Le fragment de sonde executableUnit
Le fragment de sonde staticInitializer

Conditions d'utilisation | Commentaires
(C) Copyright IBM Corporation 2004. All Rights Reserved.