Frage

Ich bin über die BEA Weblogic Server v9.2 Laufzeitumgebung eine Weblogic Anwendung in Eclipse starten. Wäre dies direkt von der Befehlszeile ausgeführt wird, würde ich tun, um ein ctrl-BREAK ein Thread-Dump zu erzwingen. Gibt es eine Möglichkeit, es in Eclipse zu tun?

War es hilfreich?

Lösung

Tatsächlich (dank VonC an den SO-Thread Punkt), Dustin, in einem Kommentar zu seiner Botschaft, verweist auf jstack

.

Ich habe eine kleine Java-Anwendung (mit GUI) in Eclipse läuft, kann ich die damit verbundenen javaw.exe in Windows' Prozess-Manager und seine PID, 7088 (es ist noch einfacher in Unix, natürlich) sehen.

Wenn ich an einer Eingabeaufforderung jstack 7088 geben, habe ich das gewünschte Stapelabbild pro Thread.
Cool.

wäre besser, wenn wir, dass direkt von Eclipse-tun könnten, aber das ist schon nützlich, wie ist.

Andere Tipps

Sie können es tun, wenn Sie im Debug-Modus sind. Gehen Sie auf die Debug-Ansicht in der Debug-Perspektive, klicken Sie auf den Prozess, den Sie ins Leben gerufen haben, und klicken Sie auf Pause, werden Sie eine grafische Stapel alle Prozesse erhalten

. Hinweis: Dies funktioniert auch, wenn Remote-Debugging verwenden, brauchen Sie nicht weblogic von Eclipse zu starten, können Sie es auf seinem eigenen starten, um die Debug-Ports öffnen und eine „Remote-Java-Anwendung Debug-Konfiguration“ für sie erstellen

Eclipse-Wiki: Wie ein Deadlock berichten alle möglichen Optionen listet ein Thread-Dump in Eclipse zu schaffen . In Abhängigkeit von der konkreten Situation, die ein oder andere besser arbeiten kann -. Mein persönlicher Favorit unter Windows ist das Adaptj Stacktrace Werkzeug

Stacktrace ist eine weitere Option, die Sie könnten versuchen. Aus den Funktionen:

  

Thread-Dump für Java-Prozesse ausgeführt   als Fenster Service (wie Tomcat, für   Beispiel), begann mit javaw.exe ,   Applets innerhalb jedem Browser ausgeführt wird oder   JVMs in einem anderen Prozess eingebettet.   Stacktrace arbeitet unter Windows, Linux und   Mac OS X.

Wenn Sie es vorziehen, UI-basierte Lösung VisualVM könnte eine gute Wahl sein. (Es Vorteil ist auch, dass es mit JDK verteilt wird)

Um das Thread-Dump in VisualVM nehmen:

  1. die Verbindung zum Prozess (remote oder lokal) und
  2. gehen für Threads (tab) -> Thread Dump (Button)

Haben Sie versucht, Ihre Eclipse mit java.exe zu starten statt javaw.exe (in der eclipse.ini )?

Das könnte Ihnen die Konsole Sie benötigen, wie in diesen Fehler und diese Nachricht .

Andere Ideen (in der Bezeichnung der Java-Optionen) könnten von diesem andere Frage SO .

Sie können durch die jvisualvm verbinden und einen Thread-Dump erhalten. Einfach mit der rechten klicken Sie auf den Anwendungsknoten von der Anwendungsstruktur und wählen Sie „Thread-Dump“

Unter Linux zumindest können Sie eine ps -ef | grep java tun, um die PID zu bekommen und dann eine kill -3 PID tun und es wird zur Ausgabe in der Eclipse-Konsole.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top