BTrace 入门教程

简介: 很久没发文了,不知道小伙伴们是不是忘记我们了?主要是最近我和znlover在利用业余时间开发一款小程序,一直没时间写文章,小程序目前在内测阶段,在接下来的时间,我们会持续更新文章。在此,给支持我们的读者说声谢谢,感谢你们一直在默默支持我们。

在生产环境,如何排查疑难杂症?如何动态获取应用信息?这是我们许多Java程序员头痛的问题,自从有了 BTrace 很多问题便迎刃而解。


一、BTrace 是什么?


顾名思义,我们都知道单词trace,指跟踪,那么BTrace肯定就是跟调试有关的一款工具。


官方解释:是一款可靠的,用来动态跟踪 Java 程序的工具。可通过动态对运行中的 Java 程序进行字节码生成来工作。BTrace 会对运行中的 Java 程序的类插入一些跟踪操作,来对被跟踪的程序进行热替换。


BTrace 之所以称为神器,主要是它直接attach应用JVM,不用重启应用进程,可快速定位问题。


二、认识 BTrace


去官网下载 BTrace,配置环境变量以便在任何路径下能执行 btrace 命令。


在 %BTRACE_HOME%\bin 目录下,我们会发现三个脚本:btrace、btracec、btracer。


btrace:对运行中的JAVA程序执行btrace脚本。

btracec:预编译BTrace脚本,在编译期验证脚本正确性。

btracer:同时启动应用程序和BTrace脚本。


三、知识点


类注解


@BTrace 指明该java类为一个btrace脚本文件。


方法注解


image.png


@OnMethod 是一个常用的注解,需要重点掌握;它的属性如下:


clazz:指定要跟踪的类;

method:指定要追踪的方法。

type:指定要被跟踪的方法的签名;一般可以不声明,绝大部分情况下依靠clazz和method即可确定要跟踪的方法。

location:指定要跟踪的方法的位置。如@Location(Kind.RETURN)表示方法返回处,@Location(Kind.ENTRY)表示方法入口处,@Location(Kind.ERROR)表示异常没被捕获被抛出目标方法之外时,

@Location(Kind.THROW)表示异常抛出时,@Location(Kind.CATCH)表示异常被捕获时,@Location(Kind.CALL)表示被调用时,@Location(Kind.CALL)表示被调用时,@Location(Kind.Line)表示执行到某行时。


方法参数注解


image.png


四、入门实例


其实例子可以去 %BTRACE_HOME%\samples\ 目录找。


作者建议在写脚本的时候,引入 maven 相关依赖,这样做的好处在于能够只能提示,如下:


image.png


Demo.java 如下:


image.png


BtraceDemo.java 如下:


image.png


测试结果:


image.png


这里只是一个简单的例子入门,更加复杂的线上操作实例,需要根据具体的业务来写,建议大家多去看一下btrace作者提供的实例。


五、参考


wiki:https://github.com/btraceio/btrace/wiki

github:https://github.com/btraceio/btrace

代码自动生成工具: https://btrace.org/btrace/


相关文章
|
2月前
|
Java
BTrace如何使用?
BTrace如何使用?
68 0
|
7月前
|
XML Java 测试技术
《手把手教你》系列基础篇(八十二)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-上篇(详解教程)
【6月更文挑战第23天】TestNG 是一个用于自动化测试的 Java 框架,它自动生成测试报告,包括 HTML 和 XML 格式。报告可在 `test-output` 文件夹中找到。要创建测试用例,可创建一个实现了 `@Test` 注解的方法。通过 `testng.xml` 配置文件来组织和执行测试。默认报告包括测试结果、失败点和原因。用户还能实现 `ITestListener` 和 `IReporter` 接口来自定义报告和记录器。
70 2
|
8月前
|
前端开发 JavaScript Java
《手把手教你》系列技巧篇(二十五)-java+ selenium自动化测试-FluentWait(详细教程)
【4月更文挑战第17天】其实今天介绍也讲解的也是一种等待的方法,有些童鞋或者小伙伴们会问宏哥,这也是一种等待方法,为什么不在上一篇文章中竹筒倒豆子一股脑的全部说完,反而又在这里单独写了一篇。那是因为这个比较重要,所以宏哥专门为她量身定制了一篇。FluentWait是Selenium中功能强大的一种等待方式,翻译成中文是流畅等待的意思。在介绍FluentWait之前,我们来讨论下为什么需要设置等待,我们前面介绍了隐式等待和显式等待。
76 3
|
8月前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
342 0
|
8月前
|
Java 测试技术 API
《手把手教你》系列技巧篇(六)-java+ selenium自动化测试-阅读selenium源码(详细教程)
【2月更文挑战第15天】《手把手教你》系列技巧篇(六)-java+ selenium自动化测试-阅读selenium源码(详细教程) 前面几篇基础系列文章,足够你迈进了Selenium门槛,再不济你也至少知道如何写你第一个基于Java的Selenium自动化测试脚本。接下来宏哥介绍Selenium技巧篇,主要是介绍一些常用的Selenium方法或者接口(API),通过这些接口(API)或者方法的具体操作,达到能够熟练使用Selenium编写Java的自动化测试脚本,从而为后续的Java+Selenium自动化测试框架设计打基础。
126 0
|
8月前
|
分布式计算 Oracle Java
第一篇CSDN博客——Java入门指南:学习Java编程的第一步
第一篇CSDN博客——Java入门指南:学习Java编程的第一步
|
Java Unix BI
PMD【 Java 代码检查工具】入门使用教程(超详细)
PMD【 Java 代码检查工具】入门使用教程(超详细)
PMD【 Java 代码检查工具】入门使用教程(超详细)
|
Java 编译器
强烈推荐的一款 Java 反编译工具:JAD
强烈推荐的一款 Java 反编译工具:JAD
6022 0
强烈推荐的一款 Java 反编译工具:JAD
JShell工具介绍
JShell工具介绍自制脑图
112 0
JShell工具介绍
|
IDE Java 关系型数据库
如何搭建开发环境整理大全 Java篇
由于最近真的被问了太多关于环境搭建的问题,所以特地来整理了几篇文章介绍开发环境搭建。我们都知道开发一个系统、软件流程:
如何搭建开发环境整理大全 Java篇

热门文章

最新文章