Btrace跟踪代码

安装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

你可能感兴趣的:(Btrace跟踪代码)