Me gustaría analizar y comprender una determinada aplicación Java y creo que un gráfico de llamadas sería muy útil. ¿Cómo puedo generar uno? Estoy usando Eclipse.Cómo generar un gráfico de llamadas Java
Respuesta
Conseguir pila de llamadas
1) Si es posible depuración la aplicación simplemente poner un punto de interrupción (haciendo doble clic sobre el margen izquierdo del código) y esperar a que se detenga. Vaya a Debug Perspective si no está allí, y abra la vista/panel de la pila de llamadas. Tiene la pila de llamadas :)
2) Si desea imprimir esta seguimiento de la pila utilizar alguna parte una excepción:
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
método de obtención hace referencia a
Puede obtener todas las referencias a un método haciendo clic derecho, Referencias, Espacio de trabajo. Buscará todos los llamamientos en sus proyectos abiertos actuales. Muy muy útil.
perfilar una aplicación
(gracias a los que habían respondido a la opción de perfiles)
Eclipse TPTP ofrece perfiles:
http://www.eclipse.org/tptp/home/project_info/general/whatisTPTP.php
El uso del Eclipse Profiler puede proporcionarle lo que desea.
Ese proyecto es reemplazado por Eclipse TPTP. Agregaré su enlace a mi respuesta (pero voy a hacer +1 al suyo) – helios
Rápido y sucio, cree una nueva excepción e imprima stacktrace.
Exception e = new Exception();
e.printStackTrace();
Creo que está buscando visualizar los datos, no solo obtener el seguimiento de la pila. –
@Kristopher Entonces es un depurador que realmente necesita. – HeDinges
Uso el Eclipse Profiler a veces.
Netbeans profiler es muy bueno para esto !!
Las funciones de perfiles incluyen CPU, memoria y hilos de perfiles, así como el seguimiento básica JVM ...
También puede utilizar comandos jconsole (parte del JDK)
Se inicia una herramienta de consola gráfica que le permite supervisar y administrar aplicaciones Java y máquinas virtuales en una máquina local o remota.
Thread.dumpStack() le permite generar la pila de llamadas actual sin lanzar una excepción o usar un depurador. Esto se enviará a la consola.
Puede poner una llamada a dumpStack() en "puntos de acceso" de su código para obtener la pila de llamadas que la aplicación tomó para llegar a ese punto.
Tuve exactamente el mismo problema, así que escribí el conjunto de herramientas java-callgraph. Utilizándolo, puede crear gráficos de llamada dinámicos (en tiempo de ejecución) y gráficos de llamada estáticos, siempre que tenga los archivos jar del programa y de sus dependencias.
No se puede obtener un gráfico de todo el código en eclipse. Sin embargo, puede obtener una vista en árbol de las personas que llaman o llaman a un método.
En el código fuente, haga clic derecho en el nombre de un método de interés, por ejemplo main (String [] args), a continuación, haga clic en Abrir Jerarquía de llamada. (Ctrl + Alt + H en Windows)
Esto abrirá una vista en árbol de la jerarquía de llamantes (Jerarquía de llamantes). Hay una opción para ver la Jerarquía de Callee.
Para copiar un archivo de texto, haga clic con en un nodo de la llamada vista de estructura jerárquica y haga clic en jerarquía de la copia ampliada.
inconvenientes:
- expansión de todos los nodos del árbol debe ampliarse hecho de forma manual (Shift + Flecha derecha pulse repetidamente en Windows)
- si no es obvio punto de partida para el código, usted tiene que hacer esto para cada método
- 1. ¿Cómo usar LLVM para generar un gráfico de llamadas?
- 2. Generar gráfico de llamadas para el código de C++
- 3. Análisis estático del gráfico de llamadas Java
- 4. Biblioteca Java para generar el Gráfico interactivo
- 5. generan gráfico de llamadas jerarquía con ctags
- 6. Generando un gráfico de llamadas en R
- 7. ¿Cómo generar un gráfico de impacto similar a Github?
- 8. Generar el árbol de llamadas de script de shell
- 9. Seguimiento de llamadas en java
- 10. Creando un gráfico en java
- 11. gprof: ¿Cómo generar gráfico de llamadas para las funciones de biblioteca compartida que está vinculado al programa principal
- 12. ¿Cómo puedo ver una visualización de un gráfico dinámico de llamadas para un programa .NET?
- 13. ¿Cómo generar gráficos de llamadas para javascript dado?
- 14. ¿Cómo generar diferentes colores de la misma luminancia para el gráfico de líneas en Java?
- 15. ¿Generar un gráfico con cierta distribución de grados?
- 16. rendimiento gráfico de Java
- 17. cómo obtener doxygen para generar gráficos de llamadas y llamadas para funciones c
- 18. ¿Cómo generar un gráfico de la dependencia entre todos los módulos de un proyecto Maven?
- 19. ¿Cómo puedo hacer un gráfico de llamadas de análisis estático para Perl?
- 20. ¿Cómo puedo generar un árbol de llamadas inversas para un proyecto Delphi?
- 21. ¿Cómo generar un gráfico de dependencia por clase solo para un proyecto?
- 22. Cómo generar un número aleatorio de cinco dígitos de Java
- 23. ¿Por qué kcachegrind no muestra el gráfico de llamadas?
- 24. Cómo trazar un gráfico usando R, Java y JRI?
- 25. ¿Cómo generar efectos de sonido en Java?
- 26. C++: generar el árbol de llamadas a la función
- 27. generar un número aleatorio corto en java?
- 28. ¿Cómo generar build.xml para un nuevo proyecto de Java?
- 29. Cómo generar una suma de comprobación para un objeto java
- 30. cómo generar un hash como htpasswd de Apache usando java
También hay un 'Thread # dumpStack()' que se prefiere sobre 'new Exception()'. – BalusC
Gracias chicos. Utilicé TPTP que no está mal para mis propósitos. – Guy