Btrace的实战应用

最近在处理一个准线上问题的时候一个前辈介绍了一个很好用的检测工具:Btrace(强大之处就不多说了,不了解的自行google)。实现原理可以参考http://www.ibm.com/developerworks/cn/java/j-lo-instrumentation/。
接下来就来介绍下怎么玩Btrace(Linux环境)

1) 首先下载:wget https://kenai.com/projects/btrace/downloads/download/releases/release-1.2.2/btrace-bin.zip,下载下来后直接解压

2) 修改{btace_home}/bin/btrace文件
#后面会需要编译一个BTrace.java的文件,所以这个路径不可少
JAVA_HOME=/XXX/XXX/java

#因为需要动态编译,所以需要设置原类库的classpath,主要是要编译BTRACE文件,它里面 肯定有依赖原类(这个是非必配项,只有当你BTrace类中需要引入工程中其他类时才需要设置)
CLASS_PATH=需要引入的类的classes的目录

#BTRACE_HOME路径,编译以及运行时都需要BTRACE自己的jar包
BTRACE_HOME=/home/work/btrace

3)新建一个Trace.java(名字自己取),这里写的例子是检测一个方法的返回值
(具体写法根据需要自行设置,网上也有用法):

import com.sun.btrace.AnyType;
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;
@BTrace
public class Trace {
@OnMethod(clazz = "类全名,包含包名", method = "需要检测的方法", location = @Location(Kind.RETURN))
// 注意点: 如果你检测的类返回的是一个基本类型这边@Returen 后面需要用对应的类型来接受返回值
public static void m0(@Return Object ret) {
println("XXXXX===返回值为==");
println(str(ret));//返回值
}
}


4) 运行 {btrace_home}/bin/btrace 应用的pid Trace.java

BTrace正式开始工作啦 :)


PS:试验发现内部类监控不到
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值