java调试利器-arthas极简入门
文章目录
【注意】最后更新于 December 13, 2021,文中内容可能已过时,请谨慎使用。
Arthas 是Alibaba开源的Java诊断工具,基于greys实现
具体功能
当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
是否有一个全局视角来查看系统的运行状况?
有什么办法可以监控到JVM的实时运行状态?
怎么快速定位应用的热点,生成火焰图?
怎样直接从JVM内查找某个类的实例?
基本使用
|
|
常用指令
-
watch 观察函数调用情况,可以获取返回值,抛出异常,入参
使用场景: 线上bug,本地难以复现时,可以找到关键函数,了解其入参和出参是否符合预期
-
monitor 方法执行监控
使用场景: 可以确认代码是否被执行到
-
logger 动态修改日志级别
官方文档里还提供了很多实用的命令,详细见下方链接
idea插件
arthas提供了idea插件,可以很方便的获取程序的表达式,而不用去记忆
Jetbrains 插件获取地址: https://plugins.jetbrains.com/plugin/13581-arthas-idea
使用文档:https://www.yuque.com/arthas-idea-plugin
源码地址: https://github.com/WangJi92/arthas-idea-plugin
安装后,在指定方法鼠标右键点击选择arthas command既可

在docker中使用
直接在服务器使用的教程,官方的入门手册很完善了,这里主要说下在docker下的使用
很多时候,应用在docker里出现arthas无法工作的问题,是因为应用没有安装 JDK ,而是安装了 JRE 。如果只安装了 JRE,则会缺少很多JAVA的命令行工具和类库,Arthas也没办法正常工作
但是用这种方式无法使用mc命令
第一种方式: 使用包管理工具安装jdk
|
|
第二种方式: 直接下载jdk到容器中,然后用新下载的jdk启动arthas
|
|
文章作者 lialzm
上次更新 2021-12-13