Probekit est un cadre d'applications sur la plate-forme Eclipse qui peut vous servir à écrire et utiliser des sondes. Les sondes sont des fragments de code Java™ qui peuvent être insérés dans un programme pour fournir des informations sur le programme pendant son exécution.
Pour mieux comprendre ce que sont les sondes, commencez par l'exemple décrit ici. Il s'agit d'une sonde simple, qui imprime un message identifiant chaque méthode appelée pendant l'exécution de votre programme.
Les sondes sont définies par les entrées que vous saisissez dans l'éditeur Probekit. Cet exemple ne contient qu'un fragment ; les
fragments déterminent les actions des sondes. Les définitions de fragments comprennent :
- Une spécification du type de fragment. Ce fragment est un fragment d'entrée, ce qui veut dire qu'il s'exécute au moment de l'entrée de la méthode.
- Les données accessibles au fragment. Ici, le fragment a accès aux noms des classes et des méthodes.
- Le fragment de code Java qui définit la logique de la sonde.
Ce fragment appelle System.out.println pour afficher le nom de classe et de méthode de la méthode en cours.
Voici l'apparence de la sonde dans l'éditeur Probekit :

Après avoir créé une sonde avec l'éditeur Probekit, vous pouvez l'appliquer à la classe et aux fichiers JAR de votre projet. Ensuite, quand vous exécuterez le projet, le fragment de code s'exécutera en même temps que votre programme.
Voici un aperçu de la création et de l'utilisation des sondes, et des informations sur l'aide que vous apporte Probekit :
- Utilisez l'éditeur Probekit pour créer des sondes dans les fichiers source Probekit.
Les fichiers source Probekit doivent avoir l'extension .probe. Ils peuvent contenir une ou plusieurs sondes, et chaque sonde peut contenir un ou plusieurs fragments.
- Probekit assemble les fragments en un ensemble de méthodes Java, puis les compile. Quand Probekit compile une sonde, il combine les fragments avec un paragraphe passe-partout Java, et génère un code source Java pour une nouvelle classe de sondes. Les fonctions générées à partir des fragments de sonde apparaissent comme des méthodes statiques de la nouvelle classe de sondes.
- Quand vous appliquez une sonde, vous spécifiez les fichiers JAR et la classe cible que vous voulez examiner. Le moteur d'instrumentation bitecode (byte-code instrumentation, BCI) Probekit se réfère à la liste des sondes disponibles et aux motifs cibles et insère des appels de méthodes de fragments de sonde dans les programmes cibles. L'insertion d'instructions d'appel dans des méthodes cible est appelée instrumentation.
Une classe contenant une méthode instrumentée est appelée une classe sondée.
Les données demandées par un fragment (par exemple, le nom de la méthode et de la classe) sont transmises comme arguments.
- Après que l'application a été instrumentée. Les fragments de sonde s'exécuteront en même temps que le programme.
Le
type de fragment détermine quand un fragment s'exécute. Vous pouvez spécifier les types qui entraînent l'exécution du fragment dans les occasions suivantes :
- à l'entrée de la méthode,
- à la sortie de la méthode (retour normal ou
résultat d'une exception),
- au moment du gestionnaire d'exceptions, à
savoir en haut de la clause catch ou de la clause
finally exécutée comme résultat d'une exception,
- avant le code d'origine dans l'initialiseur
statique de la classe,
- avant chaque unité de code exécutable
(lorsque les informations sur le code source sont disponibles),
- quand des méthodes spécifiques sont appelées. (Dans ce cas, l'instrumentation a lieu sur le site d'appel, et non dans la méthode appelée.)
Remarque : Pour plus d'informations sur les types de fragments, voir les
Types de fragments.
Les fragments de sonde peuvent accéder à des données fournissant toutes sortes d'informations sur l'application au point où elles ont été insérées. Exemple :
- nom du Package, de la classe et de la méthode,
- signature de la méthode,
- cet objet,
- Arguments
- valeur de retour,
Si vous souhaitez n'appliquer la sonde qu'à certaines classes et méthodes, spécifiez les cibles ou définissez des filtres. Pour plus d'informations, voir Cibles et filtres des sondes.