博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BTrace入门
阅读量:5746 次
发布时间:2019-06-18

本文共 2673 字,大约阅读时间需要 8 分钟。

BTrace入门

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

安装

现在btrace项目已经迁移到了github上了。这点可以从官网( )上看出。

点开这个链接就会跳转到btrace项目的github地址:

下面直接给出下载地址:

我这里下载的版本是

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

下载完成后,执行:

mkdir btracetar -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方法,并找到pidjps -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

    这里写图片描述

获取方法参数

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

    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:
  • 参考2:btrace的安装目录下有个 samples 文件夹,里面有各种示例

总结

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

如果想要了解各个注解的文档,可以参考:

你可能感兴趣的文章
2015腾讯笔试大题
查看>>
hive的udf制剂
查看>>
收集一些特殊的符号
查看>>
VisualC++2012 Compiler Warning C4566
查看>>
Edit Distance -- LeetCode
查看>>
BASH_SUBSHELL 变量不生效的情况
查看>>
busybox内置ftp服务器用法
查看>>
苹果试图做?XCode6 放弃prefix.pch档
查看>>
ASP.NET Web API实现微信公众平台开发(二)access_token与定时任务
查看>>
(转)菜鸟学数据库(一)——三范式
查看>>
Flume 1.5.0简单部署试用
查看>>
使用adb 查询data/data下的数据库
查看>>
设计模式之工厂模式
查看>>
Linux 性能优化工具 perf top
查看>>
浅谈JavaScript、ES5、ES6
查看>>
Codeforces Round #327 (Div. 2) C. Median Smoothing 找规律
查看>>
ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded
查看>>
C#集合u
查看>>
最少拦截系统
查看>>
lintcode :Segmemt Tree Build II
查看>>