美文网首页
Btrace跟踪代码

Btrace跟踪代码

作者: Harlin_ | 来源:发表于2017-08-05 14:38 被阅读36次

    安装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跟踪代码

          本文链接:https://www.haomeiwen.com/subject/conilxtx.html