¿Hay alguna forma de generar un seguimiento de llamadas para un hilo en particular en java?Seguimiento de llamadas en java
No quiero un seguimiento de la pila. Me gustaría una secuencia de llamadas en cada objeto para el seguimiento.
¿Hay alguna forma de generar un seguimiento de llamadas para un hilo en particular en java?Seguimiento de llamadas en java
No quiero un seguimiento de la pila. Me gustaría una secuencia de llamadas en cada objeto para el seguimiento.
Hay btrace, que se puede utilizar para este tipo de acción.
Runtime.traceMethodCalls()
, que imprime una línea para cada llamada al método de todos los objetos en todas las discusiones
Es, básicamente, querría programación orientada a aspectos de alguna forma, donde el aspecto podría determinar si el subproceso actual estaba destinado a ser llamadas de registro. (La alternativa es poner explícitamente el registro en cada método, lo cual sería doloroso).
Existen muchos marcos AOP en Java, como AspectJ y Spring (Spring es mucho más que AOP, por supuesto).
Aplicar aspectos a cada llamada de método en el sistema podría ser complicado sin embargo ... No tengo ninguna experiencia con AspectJ, pero Spring AOP está básicamente diseñado para permitir AOP alrededor de los componentes. Las clases que son efectivamente desconocidas para Spring no se pueden cambiar fácilmente. Eso sí, ha pasado un tiempo desde que utilicé Spring AOP - las cosas pueden haber empezado desde entonces :)
Podríamos crear un nuevo objeto Throwable que tendrá el rastro de llamada. Y usando algunas manipulaciones de cadena, podemos obtener la pila de llamadas.
Throwable t = new Throwable();
System.out.println(t.getStackTrace()[1].toString());
No estoy seguro de recuperar la información de esta manera, es una buena práctica o no. :)
Dolorosamente lento, por lo que se utiliza para el rastreo local durante la depuración. – glmxndr
Creo que puede encontrar esto interesante. Es un agente de Java que agrega el registro de entrada y salida a los métodos, utilizando el marco slf4j para realmente registrar el resultado. Entonces es una cuestión de configurar el marco de registro para imprimir sólo por ese hilo que está interesado en
http://www.slf4j.org/extensions.html#javaagent
(sólo para ser explícita: 1). Lo escribí, 2) que funciona para mí :))
WOW. Mente = ¡Soplado! – JavaRocky
absolutamente maravilloso! lo probé y funcionó muy bien :) ¡gracias por esta extensión tan útil! – stratwine
¿cómo puedo usar esto en proyectos de Android? – RegisteredUser
Si desea rastrear la ejecución de su código Java puede usar una herramienta llamada InTrace.
NOTA: InTrace es una herramienta gratuita y de código abierto que he escrito.
de Sun del punto de acceso en las ventanas no parece salida de las llamadas de método de rastreo. He leído que necesito ejecutar java debug con 'java_g'. ¿Algunas ideas? – JavaRocky
Sí, para mí 'Runtime.getRuntime(). TraceMethodCalls (true);' no hace nada también. ¿Debo pasar argumentos a 'javac' o' java'? –
Todavía no tiene la versión de java "1.8.0_111" –