Java动态跟踪工具(不需要重启服务)——Btrace

btrace 是一个可以不用重启线上java业务查问题的神器,安全可靠的动态跟踪工具。下面说一下btrace在windows和linux环境下的使用。

github地址:https://github.com/jbachorik/btrace

下载之后可以分别在windows和linux下解压。

一、Win7

首先配置环境变量



注意一定要配置变量名BTRACE_HOME,btrace脚本里面会引用到,不然报错。


第二,编写btrace诊断脚本,需要用到btrace安装路径/build下的几个jar包(btrace-agent.jar,btrace-boot.jar,btrace-client.jar),引入到要编写诊断脚本的项目里。

具体怎么编写脚本,请到网上查btrace的详细用法,下面只是举个例子:

package btrace;

import static com.sun.btrace.BTraceUtils.printArray;

import com.sun.btrace.AnyType;
import com.sun.btrace.BTraceUtils;
import com.sun.btrace.annotations.BTrace;
import com.sun.btrace.annotations.Kind;
import com.sun.btrace.annotations.Location;
import com.sun.btrace.annotations.OnMethod;
import com.sun.btrace.annotations.Return;
import com.sun.btrace.annotations.Self;


@BTrace
public class SelfAndArgTest {
@OnMethod(clazz="+cn.remotejob.service.IJobService",method="getJob",location=@Location(Kind.RETURN))
public static void onDetail(@Self Object self,int id,@Return AnyType val){
BTraceUtils.println("self="+self+",id="+id+",val="+val);
BTraceUtils.println(); //must add println(),otherwise can not print the last record
}

@OnMethod(clazz="cn.remotejob.web.JobController",method="detail",location=@Location(Kind.RETURN))
public static void onDetail(@Self Object self,AnyType[] args,@Return AnyType val){
printArray(args);
BTraceUtils.println("val="+val);
BTraceUtils.println(); //must add println(),otherwise can not print the last record
}

}


接下来在命令窗口执行命令btrace 99336 E:/workspace/test/src/btrace/SelfAndArgTest.java

其中99336是要诊断的java应用程序的进程ID,E:/workspace/test/src/btrace/SelfAndArgTest.java是btrace诊断脚本。


二、CentOS

和Windows下类似。首先配置环境变量,vim /etc/profile

JAVA_HOME=/xxx/jdk1.7.0_79
BTRACE_HOME=/xxx/btrace-bin-1.3.10
PATH=$BTRACE_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$JAVA_HOME/bin:/root/bin:$M2_HOME/bin

注意,请将$BTRACE_HOME变量配置到PATH的最前面,不然可能会报以下错误

Invalid path 7584 specified: 2/No such file or directory

这是因为CentOS系统下已经有了一个同名的命令btrace,导致真正的btrace诊断命令并没有被执行。

可以通过which btrace确认路径是否是你的btrace配置路径。

好了,保存文件。

使修改的配置生效:source /etc/profile


把btrace诊断脚本SelfAndArgTest.java放到一个位置,执行btrace命令就行了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值