7
votes

Trace Java Application au moment de l'exécution

J'aimerais tracer une application Java à l'exécution pour enregistrer et analyser ultérieurement tous ses comportements.

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)?

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.


3 commentaires

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é.


4 Réponses :


1
votes

Utilisez un profileur. Par exemple, JProfiler ou un de celui-ci Aperçu de Profilers de Java OpenSource. Chaque fois que je devais trouver des blocages par exemple, ces outils étaient inestimables ...


0 commentaires

1
votes

in NetBeans Le profileur existe et fonctionnent correctement pour l'utiliser voir http://profiler.netbeans.org/


0 commentaires

5
votes

Si vous avez besoin d'une exploitation de journalisation et d'exécution hautement personnalisée, une alternative aux profilers consiste à utiliser Aspects et Tissage de temps de charge .

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.


2 commentaires

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 et thisjoinpointStaticPart 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 / ...



0
votes

peut-être consulter Glassbox A agent de dépannage pour applications Java Cela diagnostit automatiquement des problèmes courants . De Glassbox - Surveillance automatisée et dépannage à l'aide de AOP :

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. (...)

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.

C'est une belle application, essayez-la.


0 commentaires