Arthas简介及IDEA插件快速入门

Arthas简介及IDEA插件快速入门

1. Arthas简介

ArthasAlibaba开源的Java诊断工具,深受开发者喜爱。

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

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

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

说了一大堆,其实Arthas最厉害的地方就在于,能够让你在线上环境没有日志的情况下进行调试程序,定位问题。

2. Arthas快速入门

  1. 首先在IDEA的插件Marketplace中找到arthas idea这款插件,安装;可以点击这里查看插件详情~
  2. 打开线上环境的terminal,执行以下语句
    curl -O https://arthas.aliyun.com/arthas-boot.jar
    java -jar arthas-boot.jar
    
  3. 然后会出现如下界面
    [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
    
  4. 选择应用的java进程即可;
  5. 比如我的应用的java进程是第2个,则输入2,再输入回车/enterArthasattach到目标进程上,并输出日志:
    [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    
    
  6. 然后如何在没有日志的情况下,像在本地一样调试线上的代码呢?首先定位到想要查看的方法(Arthas只支持到方法级别)
    在这里插入图片描述
    在这里插入图片描述
  7. 在想要定位的方法上点击右键,选择Arthas Command,选择Watch
  8. 回到terminal的界面粘贴命令
    [arthas@1]$ watch com.XX.XXX.XXX.XXX XXXX '{params,returnObj,throwExp}'  -n 5  -x 3 
    
    默认-n 5,代表命令执行最大次数为5次;可以手动更改;
  9. 然后terminal中就会显示该方法的入参和出参,就像在本地调试一样方便~
  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kuo-Teng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值