美文网首页
Btrace使用

Btrace使用

作者: SparkOnly | 来源:发表于2021-01-16 21:00 被阅读0次

btrace是一个java平台上使用的动态追踪工具

btrace工具下载

github的地址为:https://github.com/btraceio/btrace/tree/master
下载地址为:https://github.com/btraceio/btrace/releases
这里记录下我对btrace的使用示例

代码编写

新建maven工程

其中配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.ye</groupId>
    <artifactId>btrace</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>com.sun.tools.btrace</groupId>
            <artifactId>btrace-boot</artifactId>
            <version>1.2.3</version>
        </dependency>

        <dependency>
            <groupId>com.sun.tools.btrace</groupId>
            <artifactId>btrace-agent</artifactId>
            <version>1.2.3</version>
        </dependency>

        <dependency>
            <groupId>com.sun.tools.btrace</groupId>
            <artifactId>btrace-client</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>
</project>

代码示例

import com.sun.btrace.AnyType;
import com.sun.btrace.BTraceUtils;
import com.sun.btrace.annotations.*;

import java.lang.reflect.Field;

@BTrace
public class BtraceApollo {

    //@OnMethod(clazz = "com.ctrip.framework.apollo.biz.config.BizConfig", method = "/.*/", location = @Location(Kind.ENTRY))
    /*public static void config(@ProbeClassName String pcm, @ProbeMethodName String pmn, AnyType[] args){
        BTraceUtils.println("any config...");
        BTraceUtils.printArray(args);
        BTraceUtils.println(pcm+","+pmn);
        BTraceUtils.println();
    }*/

    @OnMethod(clazz = "com.ctrip.framework.apollo.common.config.RefreshableConfig", method = "getValue", location = @Location(Kind.RETURN))
    public static void getValue(@ProbeClassName String pcm, @ProbeMethodName String pmn, AnyType[] args, @Return Object retVal){
        BTraceUtils.println("RefreshableConfig getValue...");
        BTraceUtils.printArray(args);
        BTraceUtils.println(pcm+","+pmn);
        BTraceUtils.println(BTraceUtils.str(retVal));
        BTraceUtils.println();
    }
}

代码中只能使用BTraceUtils的方法,否则使用的时候会报错
上面的代码是对Apollo取配置信息的地方进行拦截处理,打印出参数,类名,方法名,返回值

使用方法

  1. 获取Java进程的pid
jps
image.png

这里取apollo-adminservice.jar的进程id 26907

  1. attach到进程上
    进到下载的btrace目录中,执行以下命令
btrace/bin/btrace 26907 BtraceApollo.java
  1. 执行方法,观测日志


    image.png

    可以看到,打印出参数,类名,方法名,返回值。符合预期

相关文章

  • BTrace:线上问题排查工具

    BTrace简介 GitHub地址:BTrace 下载地址:v1.3.11.3 官方使用教程:Btrace使用教程...

  • 用btrace分析线上服务

    部署 btrace1.2.5.1已经部署到集群/home/xjyin/btrace-1.2.5.1 使用方式 基本...

  • btrace 使用

    环境 应用由Jave Service Wrapper 启动,在wrapper的配置文件里启用了-XX:+Disab...

  • Btrace使用

    btrace是一个java平台上使用的动态追踪工具 btrace工具下载 github的地址为:https://g...

  • Btrace学习笔记二

    Btrace拦截行号 被拦截对象(Btrace只能在本地运行) 拦截行号的btrace脚本 运行btrace脚本 ...

  • Btrace UserGuide翻译转载

    原文地址:BTrace用户手册<译> BTrace(https://btrace.dev.java.net/) 是...

  • BTrace使用小结

    简介 BTrace是一个安全的JVM动态追踪工具,最初为原Sun公司Kenai项目下面的一个子项目。 典型的使用场...

  • BTrace的使用

    简介 BTrace可以动态地向目标应用程序的字节码注入追踪代码 所依赖的技术: JavaComplierApi、J...

  • btrace-doc

    btrace on github demo 动态获取传入参数 源码 btrace脚本(PrintArgSimple...

  • 使用Btrace进行代码调试

    Btrace简介 Btrace是SUN公司开发的一款动态的Trace工具.Btrace最大的好处是可以自己编写脚本...

网友评论

      本文标题:Btrace使用

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