首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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脚本文件。

方法注解

@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)表示执行到某行时。

方法参数注解

四、入门实例

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

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

Demo.java 如下:

BtraceDemo.java 如下:

测试结果:

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

五、参考

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

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

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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180308G00B7E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券