thread log full java debugging thread-dump

java - log - solaris thread dump



Dump dump programmatically/JDI(Java Debugger Interface) (4)

Me gusta generar un volcado de subprocesos programáticamente. Aprendí que hay básicamente dos formas de hacerlo:

  1. Utilice la "Interfaz de herramienta de máquina virtual de Java" JVM-TI
  2. Utilice la JDI "Interfaz de depurador Java abstraída" más alta

Para la JVM-TI pude encontrar información útil, pero tendría que escribir una JNI-DLL que, al menos por el momento, quisiera evitar. Con JDI puedo usar Java y parece que puedo usarlo desde dentro de la aplicación. Pero no pude encontrar algún tipo de tutorial o HOWTO para ello. La única documentación que pude encontrar, fueron los Java-Docs http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdi/ que no es muy útil, porque no me muestra cómo usar esta clase

Entonces, ¿alguien sabe de un buen tutorial / libro que pueda leer?

Thx por cualquier ayuda!


¿Consideraste la alternativa remota? Es decir, VisualVM

thead dump con visualVM http://java.sun.com/javase/6/docs/technotes/guides/visualvm/images/applications-window-menu.png

jps y jstack también son herramientas útiles incluidas en JDK 5, que proporcionan un método de línea de comando rápido para obtener trazas de pila de todos los hilos actuales.

Este artículo sugiere que JDI también se usa como una herramienta remota .

Así que no estoy seguro de que pueda desencadenar un volcado de hilo dentro de su propio programa, sino que encuentra una forma de enviarse una señal SIGQUIT (kill -3) en plataformas Unix, o presione la tecla Ctrl- en Unix o Ctrl-Break en plataformas Windows.

Además, JDI no estaba destinado a ser utilizado para depurar el mismo proceso en el que se ejecuta el cliente JDI . Todavía este hilo con el que acabo de vincular es el más cercano que he encontrado para usar JDI en el mismo programa.



Thread.getAllStackTraces () solo descarga el seguimiento de ejecución de todos los hilos, pero no proporciona la información de los bloqueos de objeto que se han obtenido mediante un hilo en particular o el bloqueo en el que un hilo en particular ha estado esperando. Básicamente, no seremos capaces de bloquear los bloqueos con esto.