侧边栏壁纸
博主头像
Lang博主等级

十七岁想打职业。

  • 累计撰写 10 篇文章
  • 累计创建 11 个标签
  • 累计收到 1 条评论
隐藏侧边栏

Arthas 线上诊断工具

Lang
2021-10-25 / 0 评论 / 0 点赞 / 111 阅读 / 863 字
温馨提示:
本文最后更新于 2022-01-21,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

自从进了私有化项目组,代码产出越来越少,看别人代码越来越多。后来才发现代码调试可以本地Debug简直是种奢侈,线上的问题就不得不使用Arthas了。

我使用arthas的场景:1.监听一个方法的入参,返回值。2.class文件反编译。主要是第一点。

下面就简单介绍下怎么使用吧。

1. 安装

curl -O https://arthas.aliyun.com/arthas-boot.jar

2.启动

java -jar arthas-boot.jar

输入你需要调试的服务的序列号

image

进入到了arthas控制台

image

3.Arthas指令

监听一个方法为例:

watch cn.yr.blog.controller.web.WebArticleController getArticleById '{params,returnObj,throwExp}'  -n 5  -x 3 
  • watch:监听命令
  • cn.yr.blog.controller.web.WebArticleController:类全路径
  • getArticleById :方法名
  • '{params,returnObj,throwExp}':代表要监听 入参,返回值,异常信息
  • -n 5 :监听5次 方法执行次数超过5次后退出
  • -x 3 :参数的打印深度 如果参数比较复杂,包裹层级较多,如果想看得详细就改大些。

image

这里强烈推荐一个IDEA的插件:arthas idea
可以一键生成arthas指令:在需要调试的方法名上右键->Arthas Command -> watch

image

接下来演示反编译:
在修改bug后,重新部署中,有时候不确定是否代码时候正确更新。就可以反编译看看线上代码是否正确。

jad cn.yr.blog.controller.web.WebArticleController

jad + 类路径即可

4. 总结

Arthas确实为线上调试提供了很大的便利,但也有些不足,比如不能监听到方法内部成员变量的值。

Arthas的功能远不如此,文档在此:https://arthas.aliyun.com/doc

阿里巴巴开源的,中文文档读起来还是挺舒服的。

0

评论