2016-07-29 4 views
0

Ich muss eine alte, große Java-Code-Basis verstehen, die nicht von mir geschrieben wurde.Tool, um zu verfolgen, welche Methode gerade von JVM in einer Anwendung ausgeführt wird?

Um irgendeinen Fluss zu verfolgen, Wenn ich irgendeine Klasse kenne, die in diesem Fluss aufgerufen wird, werfe ich einen Exception (wie unten), um einen Stack-Trace zur Konsole zu bekommen, um zu verstehen, welche Methoden bisher aufgerufen wurden und weiter fortfahren.

 try { 
      throw new Exception(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

Das hilft mir, einem gewissen Grad, aber ich bin völlig blind über andere fließt, wo ich nicht Eintritts-/Mitte/Ausspeisepunkte in diesem Fluss kennen.

Ich frage mich, gibt es irgendein Werkzeug oder Mechanismus, der sagt, was JVM gerade ausführt?

+5

Es klingt wie Sie nach einem Debugger suchen – Joni

+0

Mine ist Embedded-Anwendung. Ich kann nicht in Eclipse debuggen. Ich möchte etwas, das sagt, was JVM gerade ausführt –

+0

Haben Sie eine Netzwerkverbindung mit dem Gerät und welche Art von JVM wird ausgeführt? Debugging über TCP kann eine Option sein – Joni

Antwort

0

Wenn Sie wissen möchten, welche Threads in der JVM ausgeführt werden, können Sie einen Thread-Dump von kill -3 pid erfassen und das stdout anzeigen, oder indem Sie jconsole verwenden. Sie können einige Dumps erfassen, die ein paar Sekunden voneinander entfernt sind, so dass Sie spüren können, wie sich die "aktuelle" Funktion von einem Ort zum anderen bewegt.

Wenn Sie verfolgen/protokollieren und verstehen möchten, welche Werte von Ihren Funktionen kommen und ausgehen, können Sie Jackplay verwenden.

Verwandte Themen