Tengo un problema real para rastrear un error y me ayudaría mucho saber qué método se llama cierto método. ¿Hay alguna manera fácil de obtener una jerarquía de llamadas de Java? Java es una pequeña parte de la aplicación, así que no puedo compilar y ejecutar toda la aplicación en eclipse/net beans, así que no tengo acceso a la jerarquía de llamadas del depurador IDE.Obteniendo una jerarquía de llamadas en java
Respuesta
Thread.currentThread().getStackTrace();
o
Exception ex = new Exception();
ex.printStackTrace();
Es bastante lento, pero está bien para fines de depuración. API docs here.
¿Ha intentado utilizar la capacidad de depuración remota de Java? Google search to get you started if you haven't
Lo mejor que se puede hacer es lanzar una excepción, atraparla de inmediato y analizar el seguimiento de la pila.
Creo que es así como Log4J puede iniciar sesión en el método de llamada.
con Thread.dumpStack() o algo así, no es necesario lanzar una excepción artificial. – djna
Tiene razón en que esta es la forma en que log4j lo hace. Creo que esto solo por razones históricas, ya que Java 1.5 está disponible el método currentThread(). GetStackTrace() sugerido por Nelson, por lo que este enfoque ya no es necesario. – mikej
Java es una pequeña parte de la aplicación, así que no puedo compilar y ejecutar toda la aplicación en eclipse/net beans, así que no tengo acceso a la jerarquía de llamadas del depurador IDE.
No necesita ejecutar la aplicación en absoluto. Si crea un proyecto en Eclipse, puede usar su herramienta incorporada Jerarquía de llamadas para buscar todos los lugares posibles que llaman a un método.
Existe un trade off: la herramienta Call Hierarchy le proporcionará TODOS los lugares desde los que se llama un método. Esto es bueno si quieres/necesitas saber todas las posibilidades. La sugerencia de Neslson de Thread.currentThread().getStackTrace()
le dará los lugares desde donde se invoca un método durante el proceso de su programa para esta invocación. El matiz es que es posible que no se ejecute a través de cada ruta de código durante esta invocación. Si está viendo un comportamiento específico y desea saber cómo llegó allí, use la opción getStackTrace()
.
- 1. Obteniendo la jerarquía Clase en Java?
- 2. Jerarquía de llamadas IntelliJ de los campos
- 3. Jerarquía de llamadas al método Ruby
- 4. generan gráfico de llamadas jerarquía con ctags
- 5. Ocultar pruebas de unidades de la jerarquía de llamadas
- 6. Obteniendo una imagen de Mathematica en Java
- 7. Atajo de Intellij para la jerarquía de llamadas rápidas
- 8. Herramienta para crear la jerarquía de llamadas de la biblioteca
- 9. ¿Cómo veo la ventana de Jerarquía de llamadas?
- 10. ¿Ruby proporciona un método para mostrar las llamadas de jerarquía?
- 11. Seguimiento de llamadas en java
- 12. Obteniendo typeof en Java
- 13. Obteniendo pilas de llamadas correctas en VS Concurrency profiler
- 14. ¿Cómo navego por una jerarquía de llamadas a métodos en Xcode 4?
- 15. Patrón de Java Builder y una jerarquía de objetos "profunda"
- 16. Java: Spring security 3 Jerarquía de roles
- 17. Obteniendo el número de archivos en una carpeta en java
- 18. Java: limitar a clases de jerarquía?
- 19. Obteniendo convenciones de llamadas desde la información de DWARF
- 20. Obteniendo llamadas al sistema Python como resultado de cadena
- 21. Obteniendo un archivo de una solicitud HTTP en java
- 22. En Eclipse, en la jerarquía de llamadas, ¿forma de expandir todo?
- 23. Llamadas al método de captura en Java
- 24. Obteniendo una suma SQLite en Java en Android
- 25. obteniendo nietos de xml en java
- 26. ¿Cómo se muestra la jerarquía de árbol en Java?
- 27. ¿Existe alguna función en Emacs para la jerarquía de llamadas de función
- 28. ¿Cómo encuentro en Xcode todas las funciones de llamante de una función específica como Jerarquía de llamadas de eclipse?
- 29. Obteniendo el lenguaje OS en java
- 30. fundamento detrás de la jerarquía de excepciones de Java
Parece que realmente quiere un seguimiento de pila, no una jerarquía de llamadas. (¿Es posible editar el Asunto de una pregunta?) –
Un rastreo de pila es una jerarquía de llamadas a menos que me falte alguna diferencia sutil. –
Una jerarquía de llamadas es un ÁRBOL de todos los lugares desde los que se puede invocar un procedimiento. –