如何在运行时更改byteman的规则

时间:2013-05-27 10:57:30

标签: java jboss bytecode instrumentation javaagents

我已经运行了远程测试服务器,我希望使用byteman对现有代码进行一些修改。

是否可以在运行时使用自定义规则文件附加byteman(启动时我们应该设置规则文件,对大多数情况来说这不灵活)?

启动服务器时是否可以在不添加-javaagent的情况下将其附加到正在运行的服务器上?

1 个答案:

答案 0 :(得分:0)

有一个非常详细的教程,网址为:https://community.jboss.org/wiki/ABytemanTutorial#how_do_i_install_the_agent_into_a_running_program

正如教程所提到的,您可以使用 bminstall.sh 随时安装byteman代理到正在运行的JVM,安装byteman代理后,可以使用 bmsubmit.sh 将字节员脚本提交给JVM。

例如:

第1步:

bminstall.sh -h 192.168.0.1 -p 8080 -b -Dorg.jboss.byteman.transform.all 12345

上面命令中的参数12345是java进程ID的pid

第2步:

bmsubmit.sh -h 192.168.0.1 -p 8080 -l abc.btm

有关这些命令的更详细用法,请参阅相应的命令帮助。

此外,还有程序员指南(PDF):http://downloads.jboss.org/byteman/2.1.3/ProgrammersGuide-2.1.3.1.pdf