Un poco de Byteman: Conceptos avanzados

Tras el primer post dedicado a Byteman (leer aquí) hoy nos toca ver algunos conceptos más avanzados.

Script bmjava

En el post anterior ejecutábamos este comando:

Esto mismo se puede hacer con el script bmjava.sh o bmjava.bat

(bmjava -l BytemanThreadRule.btm BytemanThreadExample Hilo1 Hilo2 Hilo3)

¿Cómo chequear si una regla es correcta?

Puedo usar el script bmcheck

¿Cómo cargar rules Byteman en un programa en ejecución?

Con Byteman podemos cargar y descargar reglas sobre un programa en ejecución:

Para esto hay que indicarle a Byteman que arranque su agent listener. Para esto se lanza con la opción listener=true

java -javaagent:%BYTEMAN_HOME%libbyteman.jar=listener:true,boot:%BYTEMAN_HOME%libbyteman.jar -Dorg.jboss.byteman.transform.all AppMain

El comando está escuchando lo escrito por consola y lo vuelve a imprimir:

Para hablar con el agent listener uso el comando bmsubmit o java -classpath %BYTEMAN_HOME%libbyteman-submit.jar org.jboss.byteman.agent.submit.Submit

Donde puedo ver que no tengo reglas cargadas aún.

Ahora cargaré la regla definida en el post anterior (BytemanThreadRule.btm)

bmsubmit -l BytemanThreadRule.btm

Si ahora ejecuto el programa veré como se ha cargado la regla:

Para descargar las reglas usaré bmsubmit -u BytemanThreadRule.btm

¿Cómo instalar el agente en un programa en ejecución?

Byteman también me permite instalar el agente en un programa Java en ejecución, si ejecuto el programa sin agente:

Necesito su PID, en Windows se puede ver en el administrador de tareas:

Y luego usaré el comando bminstall

Y luego ya puedo cargar la regla:

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s