BTrace入门

BTrace入门


概念性的东西自行网上查阅吧。

安装

现在btrace项目已经迁移到了github上了。这点可以从官网( https://kenai.com/projects/btrace/downloads/directory/releases/latest )上看出。

点开这个链接就会跳转到btrace项目的github地址:https://github.com/btraceio/btrace

下面直接给出下载地址:https://github.com/btraceio/btrace/releases 
我这里下载的版本是 https://github.com/btraceio/btrace/releases/download/v1.3.8.1/btrace-bin-1.3.8.1.tgz

下面的安装步骤主要就是设置环境变量,其实也可以不设置。这里设置下只是为方便执行命令而已。另外各种操作系统设置环境变量的方法也有所不同,我这里是采用的 mac 系统,采用的终端软件我也改变了一下,所以需要各自根据自己的实际情况进行设置。

下载完成后,执行:

mkdir btrace
tar -zxvf btrace-bin-1.3.8.1.tgz -C btrace
 
 
  • 1
  • 2
  • 1
  • 2

假设btrace路径为 : /Applications/btrace 
下面只需要设置 BTRACE_HOME 和 PATH 两个环境变量即可。

注意我这里修改的文件是~/.zshrc文件。这个要看各自使用的操作系统以及所使用的terminal客户端而定。具体是哪个文件请各自查阅相关资料。

vim ~/.zshrc 
 
 
  • 1
  • 1

拉到文件末尾,添加以下代码:(建议不要去修改已有的配置,只需要在末尾追加即可)

export BTRACE_HOME="/Applications/btrace"
export PATH=$BTRACE_HOME/bin:$PATH
 
 
  • 1
  • 2
  • 1
  • 2

保存文件,执行:

source ~/.zshrc
 
 
  • 1
  • 1

基本用法

btrace pid btrace脚本
 
 
  • 1
  • 1

编写测试类

package com.btrace;

import java.util.Random;
import java.util.UUID;

public class RemoteClass {

    public String f1(String a, int b) {
        System.out.println(a + " " + b);
        return a;
    }

    public static void main(String[] args) {
        RemoteClass rc = new RemoteClass();
        while (true) {
            rc.f1(UUID.randomUUID().toString(), new Random().nextInt());
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {

            }
        }
    }
}

然后启动main方法,并找到pid
jps -ml

我这里的pid 为:13705
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

编写btrace脚本

  • 我这里的脚本保存路径为:/Users/xxx/Desktop/btrace_script
cd /Users/xxx/Desktop/btrace_script
 
 
  • 1
  • 1

Btrace初体验

  • 功能: 每次执行完f1后,打印 “Hello BTrace”

    import com.sun.btrace.annotations.*;
    import static com.sun.btrace.BTraceUtils.*;
    import java.lang.reflect.Field;
    
    @BTrace public class HelloBtrace {
    
      @OnMethod(
        clazz="com.btrace.RemoteClass",
        method="f1"
      ) 
      public static void onF1() {
        println("Hello BTrace");
      }
    }
       
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    保存为:HelloBtrace.Java

  • 执行脚本:

    btrace 13705 HelloBtrace.java
       
       
    • 1
    • 1


获取方法参数

  • 功能:得到参数
  • 注意:参数的定义,顺序,个数保持一致。(个数我这边测试是必须保持相同的,至于类型,顺序是否必须保持一致就没有测试了)

    import com.sun.btrace.annotations.*;
    import static com.sun.btrace.BTraceUtils.*;
    import java.lang.reflect.Field;
    
    @BTrace public class HelloBtrace {
    
      @OnMethod(
        clazz="com.btrace.RemoteClass",
        method="f1"
      ) 
      public static void onF1(String a,int b) {
        println(str(a));
        println(str(b));
        println("");
      }
    }
    
       
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 执行脚本:

    btrace 13705 HelloBtrace.java
       
       
    • 1
    • 1


获取方法返回值

  • 功能:获取方法的返回值

    import com.sun.btrace.annotations.*;
    import static com.sun.btrace.BTraceUtils.*;
    import java.lang.reflect.Field;
    
    @BTrace public class HelloBtrace {
    
      @OnMethod(
        clazz="com.btrace.RemoteClass",
        method="f1",
        location=@Location(Kind.RETURN)
      ) 
      public static void onF1(String a,int b,@Return String result) {
        println(str(a));
        println(str(b));
        println(str(result));
        println("");
      }
    }
    
       
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 执行脚本:

    btrace 13705 HelloBtrace.java
       
       
    • 1
    • 1


更多功能

总结

对Btrace的用法主要就是学习用提供的各种注解,以及com.sun.btrace.BTraceUtils类提供的各种功能。

如果想要了解各个注解的文档,可以参考:https://btrace.kenai.com/javadoc/1.2/com/sun/btrace/annotations/package-summary.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值