使用背景
生产环境系统发生问题时,定位问题需要获取系统运行时的相关数据,如方法参数、返回值、全局变量、堆栈信息等。为了获取这些数据,需要修改代码,将数据输出到日志文件,再发布到生产环境。这种方式,一方面将增大定位问题的成本和周期,对于紧急问题无法做到及时定位及解决;另一方面重新部署后环境很大程度上已被破坏,很难重现问题。BTrace在这种背景环境下应运而生。
BTrace简述
BTrace(Byte Trace)是Sun推出的一款Java 动态、安全追踪(监控)工具,可以在不停机的情况下监控系统运行情况,并且做到最少的侵入,占用最少的系统资源。
官方网址:https://kenai.com/projects/btrace
BTrace在使用上做了很多限制,如不能创建对象、不能使用数组、不能抛出或捕获异常、不能使用循环、不能使用synchronized关键字、脚本的属性和方法都必须使用static修饰等,具体限制条件可参考用户手册。根据官方声明,不当地使用BTrace可能导致JVM崩溃,如BTrace使用错误的.class文件,所以,可以先在本地验证BTrace脚本的正确性再使用。
BTrace优点
- 安全性:安全性不会导致对目标Java进程的任何破坏性影响
- 无侵入性:无需对原有代码做任何修改,降低上线风险和测试成本,并且无需重启系统
安装BTrace
1)下载地址:https://github.com/btraceio/btrace/releases
2)解压缩
3)设置环境变量
BTRACE_HOME=/usr/local/btrace-bin-2.0.2
export BTRACE_HOME
export PATH=$PATH:$BTRACE_HOME/bin
使用BTrace
作用:运行Btrace脚本
命令格式:
btrace <pid>
btrace <pid> <btrace-script>




