433 字
2 分钟
开发工具之arthas命令
2018-08-30

参考链接#

arthas官方文档——arthas

arthas官方在线模拟器教程——arths

概述#

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

  1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  5. 是否有一个全局视角来查看系统的运行状况?
  6. 有什么办法可以监控到JVM的实时运行状态?

Arthas支持JDK 6+,支持Linux/Mac/Winodws,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

安装及运行#

安装#

windows版本需要从官方下载一个压缩包,解压即可

运行#

可以使用默认提供的as.bat文件,不过需要手动输入JVM进程的pid,也可以采用我下面自己写的,保存为bat批处理文件,只需知道pid,运行选择数字即可

Terminal window
:A
java -jar arthas-boot.jar
goto A
pause

实际运行效果,下图“org.apache.catalina.startup.bootsrap”是我现在的tomcat,因为只运行了一个JVM,非常好选择,直接输入1进入arthas仪表盘即可。

命令行#

redefine重新加载class文件到JVM中#

Terminal window
redefine D:/tomcat/webapps/test/WEB-INF/classes/com/test/testproject/util/JSON.class
  1. redefine只能重新加载已经存在JVM内存的中class,没有相应的class时,会报错

  1. 当已经加载过的类,是有编译错误的,也是无法重新加载的

开发工具之arthas命令
https://iszengmh.pages.dev/posts/开发工具之arthas命令/
作者
Rise Zeng
发布于
2018-08-30
许可协议
CC BY-NC-SA 4.0