安装Btrace工具
btrace是一个开源项目,选择适合自己PC的bin文件并下载,并配置好环境变量,控制台查看版本号btrace --version
准备业务代码
一段简单的业务代码,我们跟踪的方法是sayHello
,当此方法被调用时打印相应参数
import java.util.concurrent.TimeUnit;
public class Test{
public String sayHello(String name, int age) {
return "hello everyone";
}
public static void main(String[] args){
Test bTraceTest = new Test();
while (true) {
bTraceTest.sayHello("aa", 20);
try{
TimeUnit.SECONDS.sleep(1);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
}
跟踪代码
import com.sun.btrace.BTraceUtils;
import com.sun.btrace.annotations.*;
@BTrace
public class BTraceTest{
@OnMethod(
clazz = "Test",
method = "sayHello",
location = @Location(Kind.RETURN)//函数返回的时候执行,如果不填,则在函数开始的时候执行
)
public static void sayHello(String name, int age, @Return String result) {
BTraceUtils.println(BTraceUtils.strcat("name:", name));
BTraceUtils.println(BTraceUtils.strcat("age:", BTraceUtils.str(age)));
BTraceUtils.println(result);
}
}
Btrace注意事项
- btrace在运行期间会自动依赖相关jar包,jar包在btrace目录的build下面,当然也可以引入第三方jar包
- 打印信息不能用System.out而是用BTraceUtils下面的工具方法,连接字符串也不能用+号,具体查看工具面的方法
执行跟踪代码
- 运行业务代码
- 执行btrace
btrace 4338 BtraceTest.java
,这里的4338是JVM进程id,可以通过jps -mlv
查看
运行结果
name:aa
age:20
hello everyone