1.简介
官网:https://arthas.aliyun.com/zh-cn/
Arthas
是Alibaba开源的Java诊断工具,深受开发者喜爱。
当你遇到以下类似问题而束手无策时,Arthas
可以帮助你解决:
-
这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
-
我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
-
遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
-
线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
-
是否有一个全局视角来查看系统的运行状况?
-
有什么办法可以监控到JVM的实时运行状态?
-
怎么快速定位应用的热点,生成火焰图?
-
怎样直接从JVM内查找某个类的实例?
Arthas
支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab
自动补全功能,进一步方便进行问题的定位和诊断。
以上是官网的介绍。
本人是因为一个测试的一个bug认识了Arthas。前端说调用接口了,但是后端却没有日志打印,怀疑是前端根本没调用。为了证明错误到底在谁,使用Arthas去找内奸。
2.安装与使用
1.下载
curl -O https://arthas.aliyun.com/arthas-boot.jar
使用该命令在当前目录下载Arthas的jar包:arthas-boot.jar
2.使用
启动方式:java -jar arthas-boot.jar
注意启动前需要服务器有运行状态的Java服务(没有服务运行的话Arthas去监听谁呢?)。
启动成功后,Arthas会让你选择需要监听的服务,按下需要监听服务对应的数字键,然后回车即可进入Arthas的命令行界面。
常用命令:
watch:让你能方便的观察到指定方法的调用情况。能观察到的范围为:返回值
、抛出异常
、入参
,通过编写 OGNL 表达式进行对应变量的查看。
例子:监听TestController下test()方法的出入参数
watch com.example.demo.controller.TestController test "{params,target,returnObj}" -s -b -x:3
以上,更多使用方式参考官方文档即可。