Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具,深受开发者喜爱。
当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决:
1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
2.我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
3.遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
4.线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
5.是否有一个全局视角来查看系统的运行状况?
6.有什么办法可以监控到JVM的实时运行状态?
Arthas 采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
接下来我来介绍一下arthas的一些命令:
1.java -jar arthas-boot.jar + pid 启动 (注意哦:pid是进程id)
2.Jad + 类完整名 反编译class文件(注意哦:这里是完整类名包括包名)
3.jps -l 查找进程id
4.thread 查看线程
5.jad --source-only com.Arthas 反编译只显示源码
6.jad --source-only com.Arthas mysql 反编译某个类的某个方法
7.watch com.Arthas addHashSet ‘{params[0],returnObj}’ 查看入参和出参
8.watch com.Arthas addHashSet ‘{params[0],returnObj.size}’ 查看入参和出参大小
9.watch com.Arthas addHashSet ‘{params[0],returnObj.contains(“count10”)}’ 查看入参和出参中是否包含 ‘count10’
10.watch com.Arthas addHashSet ‘{params[0],returnObj.toString()}’ 查看入参和出参,出参 toString
11.stack com.UserServiceImpl mysql 观察 类com.UserServiceImpl的 mysql 方法调用路径
方法截图