文章目录
介绍
BTrace是Java平台的安全,动态跟踪工具。
BTrace可用于动态跟踪正在运行的Java程序(类似于OpenSolaris应用程序和操作系统的DTrace)。 BTrace动态检测目标应用程序的类以注入跟踪代码(“字节码跟踪”)
BTrace是检查和解决线上的问题的利器,BTrace 可以通过编写脚本的方式,在服务不用重启的情况下,获取程序执行过程中相关信息。
安装
下载地址:Btrace-1.3.11
下载完成,进行解压,自行放入读者自己的安装目录
1 | # 解压 |
配置环境变量
MaxOs用户
编辑 ~/.bash_profile 文件添加
1 | # btrace(BTRACE_HOME的路径记得替换成自己的btrace的目录) |
让.bash_profile生效
1 | $ source ~./bash_profile |
Window用户
编辑:右键—>我的电脑—>我的电脑—>属性—>高级系统设置—>环境变量—>系统变量
在系统变量中新建环境变量 BTRACE_HOME
1 | BTRACE_HOME=/Users/gulj/Applications/developsoftware/btrace |
在系统变量中找到path,在后面添加
1 | %BTRACE_HOME%\bin |
验证安装是否正确
1 | $ btrace --version |
Btrace运行脚本方式
- 在JVisual中添加Btrace插件,添加classpath
- 使用命令行 btrace [-I include-path] [-p port] [-cp classpath] pid btrace-script [args]
Btrace 注解
在我们解压后的/Users/gulj/Applications/developsoftware/btrace/docs目录下,有个usersguide.html文件,里面详细介绍了各种注解的作用以及使用方法
- Method Annotations
- @com.sun.btrace.annotations.OnMethod
- @com.sun.btrace.annotations.OnTimer
- @com.sun.btrace.annotations.OnError
- @com.sun.btrace.annotations.OnExit
- @com.sun.btrace.annotations.OnEvent
- @com.sun.btrace.annotations.OnLowMemory
- @com.sun.btrace.annotations.OnProbe
- Argument Annotations
- @com.sun.btrace.annotations.Self
- @com.sun.btrace.annotations.Return
- @com.sun.btrace.annotations.CalledInstance
- @com.sun.btrace.annotations.CalledMethod
- Field Annotations
- @com.sun.btrace.annotations.Export
- @com.sun.btrace.annotations.Property
- @com.sun.btrace.annotations.TLS
- Class Annotations
- @com.sun.btrace.annotations.DTrace
- @com.sun.btrace.annotations.DTraceRef
- @com.sun.btrace.annotations.BTrace
使用示例
新建一个springboot的web工程引入btrace的maven相关依赖
1 | <!-- btrace start --> |
编写要追踪调试的代码
1 |
|
编写追踪代码
1 |
|
运行
先把我们的springboot工程启动,通过 jps -l 取得工程的pid ,然后在执行
1 | # 49165 就是笔者工程的pid |
这样我们的追踪代码就处于一直监控状态,此时,我们通过curl、postman等方式,请求我们写好的接口
1 | curl http://localhost:8080/hello?name="btrace" |
那么我们的btrace监控就会输出我们监控的结果
追踪的代码(BtracePrintArgSimple)可以单独存放,新建一个工程,不必和我们的业务工程放在一起