Pregunta

Estoy buscando potencialmente una API JDI para detener el JVM en cualquier punto arbitrario durante su ejecución. Mirando a la Ruptura El método CREACEBreakPoIrCequest necesita una ubicación específica. ¿Hay alguna otra API que no necesite una ubicación o de alguna manera para obtener la ubicación actual que pueda pasar para crear un punto de interrupción?

Básicamente, estoy buscando una manera de adjuntar y pausar la aplicación, luego uso el agente JVMTI para recibir devolución de llamada para el evento de punto de interrupción para realizar un procesamiento adicional. Gracias

¿Fue útil?

Solución

Los puntos de interrupción solo tienen sentido con una ubicación en la fuente. Pausa arbitraria Su aplicación probablemente se realice mejor suspendiendo todos los hilos que se ejecutan actualmente en el JVM. Echa un vistazo a SuspendThreadList() o SuspendThread en jvmti. Este mecanismo sería la 'pausa' que estás buscando.

Otros consejos

Si desea pausar arbitrariamente un JVM en ejecución con JDI, usaría la interfaz JDI VirtualMachine suspender método.

Sin embargo, esto realmente no le da mucho en términos de poder conectarse a un agente JVMTI; Como señala la otra respuesta, el JVMTI tiene sus propios métodos para hacer lo mismo.

Si está buscando una forma de definir devoluciones de llamada arbitrarias para los puntos de interrupción, en lugar de llamar a un agente específico, es posible que esté interesado en jdiscript, que es una capa de secuencias de comandos alrededor del JDI que te permite hacer esas cosas con bastante facilidad en Java recto, en lugar de tener que caer en C ++.

creo jdb - The Java Debugger será la mejor opción. Por favor revise la URL sobre el jdb

http://docs.oracle.com/javase/1.3/docs/tooldocs/solaris/jdb.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top