J'aimerais tracer une application Java à l'exécution pour enregistrer et analyser ultérieurement tous ses comportements. P>
Il y a une possibilité de connecter une application Java pour obtenir des informations d'exécution comme des appels de méthode (avec des paramètres et des valeurs de retour) et de l'état d'un objet (c'est-à-dire ses attributs et dont les valeurs)? P>
Mon objectif est d'obtenir une compréhension complète du comportement des applications et de la manière dont elle traite les données. P>
4 Réponses :
in NetBeans Le profileur existe et fonctionnent correctement pour l'utiliser voir http://profiler.netbeans.org/ a> p>
Si vous avez besoin d'une exploitation de journalisation et d'exécution hautement personnalisée, une alternative aux profilers consiste à utiliser Aspects a> et Tissage de temps de charge . P>
Nous utilisons AspectJ de cette manière pour capturer et enregistrer les informations d'authentification pour les utilisateurs qui appellent un certain nombre de méthodes de faible niveau à des fins de débogage et d'annuler les modifications erronées. P>
D'accord, juste pour clarifier: Utiliser AspectJ et Tissage du temps de chargement. Serait-il possible d'être informé, lorsqu'une méthode est appelée et obtenez tous les paramètres avec leurs valeurs réelles. Et, en outre, tous les attributs avec leurs valeurs réelles de l'objet dont la méthode a été appelée?
Oui, toutes ces informations doivent être disponibles via le thisjoinpoint code> et thisjoinpointStaticPart code> objets spéciaux; Le deuxième exemple ici devrait vous aider à démarrer: eclipse.org/aspectj/doc/releed/progguide/... et dev.eclipse.org/viewcvs/indextech.cgi/aspectj-home/doc/api/o rg / ...
peut-être consulter Glassbox A agent de dépannage pour applications Java Cela diagnostit automatiquement des problèmes courants em>. De Glassbox - Surveillance automatisée et dépannage à l'aide de AOP : P>
Glassbox se déploie comme fichier de guerre à votre
Appserver et utilise ensuite la charge de AspectJ
Tissage de temps pour surveiller l'application
composants et autres artefacts, dans
afin d'identifier des problèmes comme des excédents
ou défectueux des appels distants, des requêtes lentes,
Trop de requêtes de base de données, fil
contention, même quelle demande
Les paramètres ont causé des échecs. Tout cela sans
changer le code ou le processus de construction.
(...) p>
Glassbox Surveille des applications non invasivement en utilisant des aspects pour suivre les interactions des composants. Nous surveillons également les données JMX intégrées, notamment sur une machine virtuelle Java 5 VM, nous échantillons des données de fil (toutes les 100 ms par défaut). Comme une demande est traitée, nous résumons des événements notables tels que lorsque l'heure a été dépensée et quels paramètres ont été impliqués dans la ralentir ou échouer. Nous détectons également des opérations de niveau supérieur (telles que des actions de Struts ou des contrôleurs de printemps) que nous utilisons pour faire rapport sur. Notre client Web AJAX fournit ensuite des résumés de statut en fonctionnement sur les machines surveillées et générez une analyse plus détaillée sur demande. Glassbox permet de surveiller les clusters de serveurs: l'application Web utilise JMX distant ou direct RMI pour accéder aux données de serveurs distants. Nous fournissons également un accès à distance JMX aux statistiques sommaires de niveau inférieur. P>
blockQuote>
blockQuote>
C'est une belle application, essayez-la. P>
Question muette Mais vous avez le code source et vous construisez et exécutez-le vous-même, non?
Quelques éclaircissements nécessaires: Cette application est-elle exécutée sur votre boîte locale (environnement de développement) ou souhaitez-vous également analyser ce traçage dans l'environnement de production?
Il fonctionne sur ma boîte locale dans un environnement de développement et oui, j'ai le code source, de sorte que la modification du code source avant de la compiler serait possible, mais je préférerais une solution dans laquelle le code source n'est pas modifié.