BTrace入门

article/2025/10/21 14:39:51

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

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

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

vim ~/.zshrc 

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

export BTRACE_HOME="/Applications/btrace"
export PATH=$BTRACE_HOME/bin:$PATH

保存文件,执行:

source ~/.zshrc

基本用法

btrace pid btrace脚本

编写测试类

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

编写btrace脚本

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

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");}
    }
    

    保存为:HelloBtrace.java

  • 执行脚本:

    btrace 13705 HelloBtrace.java
    
     ![这里写图片描述](https://img-blog.csdnimg.cn/img_convert/84953c3af32f49ff81650b09df101060.png)
    

获取方法参数

  • 功能:得到参数

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

    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("");}
    }
  • 执行脚本:

    btrace 13705 HelloBtrace.java
    

    这里写图片描述

获取方法返回值

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

    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("");}
    }
  • 执行脚本:

    btrace 13705 HelloBtrace.java
    

    这里写图片描述

更多功能

  • 参考1:https://kenai.com/projects/btrace/pages/UserGuide
  • 参考2:btrace的安装目录下有个 samples 文件夹,里面有各种示例

总结

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

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

如果有不对不足或需要帮助的地方,欢迎添加个人微信:WilsonPeng3


http://chatgpt.dhexx.cn/article/MvhKWYXi.shtml

相关文章

(转)btrace使用

Btrace 是一个安全,可以动态跟踪 java 程序的一种工具。他的操作不会对原有 java 进程产生影响,不用关闭正在运行的 java 进程,也不会修改 java 进程中的逻辑和数据。因此,也就成为我们线上跟踪生产代码的有力工具! 之前 Btrace 只…

【性能跟踪】btrace学习二--btrace一个简单例子

btrace安装好了,就看一些语法吧。可以到btrace的官方帮助文档中去看,基本上就可以http://kenai.com/projects/btrace/pages/UserGuide 【注:你本地的jdk要是1.6及以上才行,1.5可是不支持的】 下面以一个例子来说明: 新…

btrace 开源!基于 Systrace 高性能 Trace 工具

介绍 btrace(又名 RheaTrace) 是抖音基础技术团队自研的一款高性能 Android Trace 工具,它基于 Systrace 实现,并针对 Systrace 不足之处加以改进,核心改进点如下。 效率提升:编译期间为 App 方法自动注入自…

BTrace简介与使用说明

目录 前言 简介 安装 下载BTrace 配置BTRACE_HOME BTrace使用 注意事项 BTrace注解 ProbeClassName ProbeMethodName Self Return Duration TargetInstance TargetMethodOrField OnMethod OnTimer OnError OnEvent 在jvisualvm中使用BTrace BTraceUtils方法介绍 前言 大家在…

Btrace使用入门

目录 1.什么是BTrace 2.BTrace使用场景 BTrace可以做什么? 3.使用限制 4.使用方法及样例 4.1使用方法 4.2使用样例 2.查看哪些方法调用了 System.gc() ,调用栈是怎样的 3.打印某个类中某一方法的入参和返回值 5.拦截方法定义 定位方法 拦截时…

黄油刀ButterKnife的使用

1、ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWharton的力作,目前使用很广。最重要的一点,使用ButterKnife对性能基本没有损失&am…

Butterknife——黄油刀的基本使用

平常我们在做项目的时候,不可避免地一定会用到findviewbyid()方法,写多了还是比较繁琐的。但是有个大神Jake Wharton开源了一个神奇的框架叫做ButterKnife,炒鸡好用 接下来是黄油刀的基本用法 : 首先配置编译环境: 1.在eclipse…

黄油刀的使用

Android studio添加的插件名称: File---setting---plugins 添加三方类库 App包下的gradle添加 implementation com.jakewharton:butterknife:5.1.1 Activity布局 Altinsert选择

黄油刀butterknife在Library上的使用(元素值必须为常量表达式)

相信大家都有使用butterknife来为代码节省时间,但是当把项目合并入其他项目,或者是作为一个Library依赖的时候会发现编译会报错。 控制台显示错误:元素值必须为常量表达式。为什么会这样?仔细查看发现在library中注解生成的R文件里…

黄油刀 butterKnife

黄油刀 butterKnife: 自动findViewByID(),自动添加点击事件onClick(); 步骤: 1.引入依赖包 butterknife:8.4.0 jakewharton:butterknife:8.4.0 2.安装插件 Android ButterKnife Zelezny 3.配置build 1、工程的gradle文…

ButterKnife(黄油刀)基本使用与源码解析

前言 ButterKnife又称黄油刀,是一款快速绑定Android视图中字段和方法的注解框架,也是Android开发中比较常用的一款快速注解框架,通过ButterKnife的合理运用,我们可以避免重复地书写findViewById,在各种场合下快速地绑…

黄油刀使用方法

一.首先在最外层的build.gradle里面导入 dependencies中导入 classpath com.neenbedankt.gradle.plugins:android-apt:1.8 例: 二.在内层 build.gradle 里面导入 compile com.jakewharton:butterknife:8.4.0 annotationProcessorcom.jakewharton:butterknife-co…

一把好用的黄油刀——Butter Knife

一把好用的黄油刀——Butter Knife 下载JAR包之后需要进行简单的Eclipse配置 Introduction(官方简介,稍后译) Annotate fields with BindView and a view ID for Butter Knife to find and automatically cast the corresponding view…

Android神兵利器之黄油刀的使用(ButterKnife)

黄油刀的使用是非常简单的事情,下载的时候需要注意的有两步: 1.下载jar,而下载jar包则有两种方法: A: File->Project Structure->Dependencies->Library dependency 中直接搜索butterknife选择任意一个就可…

android[butterKnife(黄油刀)史诗详细使用方法]

butterKnife中文又名黄油刀,是一款Android视图的字段和方法绑定快速注解框架。 1.首先把查看方式改变成Android。 2.打开Gradle Scripts层下的build.radle注意括号内是module的文件。 3.将代码粘贴到如下位置。 implementation com.jakewharton:butterknife:10.2.3…

butterknife----黄油刀

Butter Knife,专门为Android View设计的绑定注解,专业解决各种findViewById。 简单使用: 添加依赖: Download dependencies { compile com.jakewharton:butterknife:8.8.1 annotationProcessor com.jakewharton:butterknife-com…

黄油刀使用方法(butterknife)

使用心得: 1.Activity ButterKnife.bind(this);必须在setContentView();之后,且父类bind绑定后,子类不需要再bind 2.Fragment ButterKnife.bind(this, mRootView); 3.属性布局不能用private or static 修饰,否则会报错 4.setConte…

Android:butterKnife(黄油刀的简单使用

butterKnife中文又名黄油刀,是一款Android视图的字段和方法绑定快速注解。 1.1首先把查看方式改变成Android。 implementation com.jakewharton:butterknife:10.2.3// 添加此依赖 annotationProcessor com.jakewharton:butterknife-compiler:10.2.3// 添加此规…

Android中ButterKnife(黄油刀)的详细使用

最近刚学会使用ButterKnife,真是超级好用,忍不住要分享给大家了。 写在前面:该文档使用7.0版本,8.0版本方法名有所改动,建议看官方文档,整体业务逻辑和原理没什么变动。 在android编程过程中,我…

黄油刀

【攻克Android (34)】Butter Knife 黄油刀 博客分类: 攻克Android系列 本文围绕以下四个部分展开: 一、注解式框架 二、Butter Knife 案例一 案例二:用 ListView 展示一个列表数据,每个Item里含有一个Button,可以…