Exercice 1.4 : Création de sondes plus avancées

Avant de commencer, vous devez terminer l'Exercice 1.3 : Application de votre sonde.

Probekit peut être utilisé pour résoudre de nombreux incidents réels de débogage et d'analyse d'exécution. Vous connaissez maintenant les bases de la création et du déploiement des sondes. Par conséquent, cette leçon et la suivante ne vous présenteront pas des activités mais plutôt des suggestions concernant les sondes que vous devrez peut-être créer pour analyser votre propre application.

Analyse d'une exception

Supposons qu'une méthode d'un servlet génère parfois une exception. Le message de journal créé n'est pas très utile ; il ne décrit pas précisément le problème. Pour obtenir plus de détails, vous pouvez créer une sonde qui s'exécute à chaque fois que la méthode génère une exception, et le code Java du fragment de la sonde peut ensuite enregistrer le message d'exception ainsi que les arguments dans la méthode. Cela vous permettra de mieux comprendre pourquoi cette exception est générée.

Lorsque vous créez une sonde et que vous la déployez, notez les points suivants :

Analyse des performances inégales d'une méthode

Voici un exemple de sonde assez complexe. Supposons qu'une méthode spécifique de votre programme s'exécute généralement rapidement mais qu'elle prend parfois plus de temps (plus de 100 ms, par exemple).

Vous pouvez créer une sonde qui enregistre les heures de démarrage et de fin d'exécution de la méthode. Lorsque le temps d'exécution est court, la sonde ne fait rien. En revanche, lorsque le temps d'exécution est long, la sonde signale les arguments à la méthode, ainsi que d'autres informations importantes sur l'état du programme à cet instant précis. Vous pouvez ainsi déterminer les raisons qui ont entraîné des temps d'exécution plus longs.

Lorsque vous créez la sonde, notez les points suivants :

A l'entrée de la méthode, cette sonde enregistre l'heure actuelle. A la sortie de la méthode, la sonde compare l'heure actuelle à l'heure d'entrée enregistrée et s'il s'est écoulé plus d'un certain temps (durée indiquée dans la zone "thresholdDuration"), elle imprime un rapport à l'aide de System.out.

Analyse de performances inégales dans une méthode récursive ou multi-unités d'exécution

La sonde présentée ci-dessus ne peut être utilisée ni avec les méthodes récursives (directement ou indirectement), ni avec celles qui peuvent fonctionner dans plusieurs unités d'exécution simultanément. Pour résoudre l'incident de récursivité, vous pouvez enregistrer les heures d'entrée sur une pile ; pour résoudre l'incident lié à plusieurs unités d'exécution, vous pouvez stocker la pile dans une variable ThreadLocal.

Voici les éléments dont vous avez besoin pour créer une version de sonde autorisant la récursivité et les unités d'exécution multiples :

Continuez le tutoriel en passant à l'Exercice 1.5 : Utilisation d'une bibliothèque d'exécution pour une logique de sondes plus complexe.

Conditions d'utilisation | Appréciations en retour
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.