Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。
当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
jar包加载的?为什么会报各种类相关的Exception?commit?分支搞错了?debug,难道只能通过加日志再重新发布吗?debug,线下无法重现!JVM的实时运行状态?JVM内查找某个类的实例?Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
说了一大堆,其实Arthas最厉害的地方就在于,能够让你在线上环境没有日志的情况下进行调试程序,定位问题。
IDEA的插件Marketplace中找到arthas idea这款插件,安装;可以点击这里查看插件详情~terminal,执行以下语句curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
[INFO] arthas-boot version: 3.6.2
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 592 arthas-boot.jar
[2]: 1 /data0/www/htdocs/code/lib/XXXXXXX.jar
[3]: 403 arthas-boot.jar
[4]: 295 arthas-boot.jar
[5]: 503 arthas-boot.jar
java进程即可;java进程是第2个,则输入2,再输入回车/enter。Arthas会attach到目标进程上,并输出日志:[INFO] arthas home: /root/.arthas/lib/3.6.2/arthas
[INFO] Try to attach process 1
[INFO] Attach process 1 success.
[INFO] arthas-client connect 127.0.0.1 3658
,---. ,------. ,--------.,--. ,--. ,---. ,---.
/ O \ | .--. ''--. .--'| '--' | / O \ ' .-'
| .-. || '--'.' | | | .--. || .-. |`. `-.
| | | || |\ \ | | | | | || | | |.-' |
`--' `--'`--' '--' `--' `--' `--'`--' `--'`-----'
wiki https://arthas.aliyun.com/doc
tutorials https://arthas.aliyun.com/doc/arthas-tutorials.html
version 3.6.2
main_class
pid 1
time 2022-06-30 18:24:02
Arthas只支持到方法级别)

Arthas Command,选择Watch;terminal的界面粘贴命令[arthas@1]$ watch com.ke.utopia.scs.saas.base.utils.DateUtils transferString2LocalDate '{params,returnObj,throwExp}' -n 5 -x 3
-n 5,代表命令执行最大次数为5次;可以手动更改;terminal中就会显示该方法的入参和出参,就像在本地调试一样方便~