Domanda

Mi piacerebbe analizzare e comprendere una certa applicazione Java e penso che un grafico delle chiamate sarebbe molto utile. Come faccio a generare uno? Sto usando Eclipse.

È stato utile?

Soluzione

Come stack

1) Se si riesce a debug l'applicazione semplicemente mettere un punto di interruzione (doppio clic sul margine sinistro del codice) e aspettare di fermarsi. Vai a debug prospettiva, se non ci sei, e aprire lo stack di chiamate View / Panel. Ha lo stack di chiamate:)

2) Se si desidera stampare questo stack trace da qualche parte utilizzare un eccezione:

Exception aux = new Exception("I'm here"); // not for throwing!
aux.printStackTrace(); // if you want it in stdout

o

Exception aux = new Exception("I'm here"); // not for throwing!
StringWriter sw = new StringWriter();
aux.printStackTrace(new PrintWriter(sw));
String result = sw.toString(); // if you want it in a string

Metodo Ottenere riferimenti

È possibile ottenere tutti i riferimenti a un metodo con il tasto destro del mouse, Riferimenti, area di lavoro. Si cercherà tutte le chiamate nei vostri progetti aperti in corso. Molto molto utile.

Profiling un app

(grazie coloro che avevano risposto l'opzione profiler)

Eclipse TPTP fornisce profiling:

http://www.eclipse.org/tptp/home/ project_info / generali / whatisTPTP.php

Altri suggerimenti

Ho avuto esattamente lo stesso problema, in modo da 'ho scritto il suite di java-callgraph di utensili. Con esso, è possibile creare sia dinamici (runtime) i grafici delle chiamate e grafici delle chiamate statiche, a condizione di avere i file jar del programma e le sue dipendenze.

Netbeans Profiler è molto buono per questo !!

  

Le funzioni di profiling comprendono CPU,   memoria e fili profiling pure   come monitoraggio di base JVM ...

È inoltre possibile utilizzare JConsole di comando ( parte del JDK )

  

Si lancia uno strumento console grafica   che consente di monitorare e gestire   le applicazioni Java e macchine virtuali   su un computer locale o remoto.

Uso della rel="nofollow Eclipse Profiler potrebbe ottenere ciò che desiderare.

Veloce e sporco, creare una nuova eccezione e stampare lo stacktrace.

Exception e = new Exception();
e.printStackTrace();

Non è possibile ottenere un grafico per l'intero codice in Eclipse. Tuttavia, è possibile ottenere una vista ad albero dei chiamanti o callees per un metodo.

Nel codice sorgente, tasto destro del mouse sul nome di un metodo di interesse, ad esempio main (String [] args) , quindi fare clic su Open Gerarchia di richiamo. (Ctrl + Alt + H su Windows)

Si aprirà una vista ad albero della gerarchia dei chiamanti (Caller gerarchia). V'è la possibilità di visualizzare il chiamato la Gerarchia.

Per copiare un file di testo, tasto destro del mouse in un nodo nella chiamata visualizzazione Gerarchia e cliccare su Copia Expanded Gerarchia.

Svantaggi:

  • espandere tutti i nodi dell'albero deve done ampliato manualmente (Shift + Freccia destra toccare ripetutamente su Windows)
  • se non v'è ovvio punto di partenza per il codice, dovrete fare questo per ogni metodo

Io uso il profiler Eclipse volte.

Thread.dumpStack () consente di emettere lo stack di chiamate corrente senza un'eccezione o utilizzando un debugger. Questo sarà l'output alla console.

Si potrebbe mettere una chiamata a dumpStack () in "punti caldi" del codice per ottenere la chiamata pila l'applicazione ha preso per arrivare a quel punto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top