接下来就来介绍下怎么玩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:试验发现内部类监控不到