Question

Je lance une application Weblogic dans Eclipse via l'environnement d'exécution BEA Weblogic Server v9.2. Si cela fonctionnait directement à partir de la ligne de commande, je ferais un Ctrl-BREAK pour forcer un vidage de thread. Y at-il un moyen de le faire dans Eclipse?

Était-ce utile?

La solution

En effet (merci à VonC pour avoir pointé vers le fil SO), Dustin, dans un commentaire à son message, pointe vers jstack .

J'ai exécuté une petite application Java (avec interface graphique) dans Eclipse. Je peux voir le fichier javaw.exe associé dans le gestionnaire de processus de Windows et son PID, 7088 (bien entendu, c'est encore plus simple sous Unix).

Si je tape à l'invite de commande jstack 7088 , j'ai le vidage de pile souhaité par thread.
Cool.

Ce serait mieux si nous pouvions le faire directement à partir d'Eclipse, mais c'est déjà utile tel quel.

Autres conseils

Vous pouvez le faire lorsque vous êtes en mode débogage: allez à la vue débogage dans la perspective débogage, cliquez sur le processus que vous avez lancé et cliquez sur pause, vous obtiendrez une pile graphique de tous vos processus.

Remarque: cela fonctionne également avec le débogage distant. Vous n'avez pas besoin de lancer weblogic à partir d’éclipse, vous pouvez le lancer tout seul, ouvrir les ports de débogage et créer une "configuration de débogage d’application java distante". pour cela.

Wiki Eclipse: Comment signaler un blocage répertorie toutes les options possibles pour créer un cliché de thread dans Eclipse . En fonction de la situation concrète, l’un ou l’autre peut fonctionner mieux. Mon outil préféré sous Windows est l’outil Adaptj Stacktrace.

StackTrace est une autre option que vous pouvez essayer. Parmi les fonctionnalités:

  

Dump de threads pour les processus Java en cours d'exécution   en tant que service Windows (comme Tomcat, pour   exemple), démarré avec javaw.exe ,   applets fonctionnant dans n'importe quel navigateur ou   JVM intégrées dans un autre processus.   StackTrace fonctionne sous Windows, Linux et   Mac OS X.

si vous préférez une solution basée sur l'interface utilisateur, visualvm peut être un bon choix. (L’avantage est qu’il est distribué avec JDK)

Pour prendre le vidage de thread dans visualvm:

  1. vous connecter au processus (distant ou local) et
  2. rechercher Threads (onglet) - > Thread Dump (bouton)

Avez-vous essayé de lancer votre éclipse avec java.exe au lieu de javaw.exe (dans votre eclipse.ini )?

Cela peut vous donner la console dont vous avez besoin, comme décrit dans ce bogue et dans ce message .

D'autres idées (en termes d'options java) pourraient découler de ceci autre question SO .

Vous pouvez vous connecter via VisualVM et obtenir un vidage de thread. Cliquez avec le bouton droit de la souris sur le nœud de l’application dans l’arborescence des applications et sélectionnez "Vidage de threads"

.

Sous Linux au moins, vous pouvez faire un ps -ef | grep java pour obtenir le PID, puis créer un kill -3 PID et le générer sur la console Eclipse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top