Arthas使用

一.简易安装

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

二.运行

java -jar arthas-boot.jar

三.使用
3.1 jad 反编译 -E使用正则

jad com.hongcheng.bigdata.startfish.controller.auth.LoginController
jad -E .*?LoginController
jad -E .*?LoginContr.*

3.2 tt 记录方法的调用情况
安装好arthas idea插件之后,在需要记录执行的方法上面单击右键,选择TimeTunnel Tt,第一个红框是获取记录方法执行的命令

tt -t com.hongcheng.bigdata.startfish.controller.auth.LoginController login -n 5 '1==1'

查看已经记录的请求

tt -w

重新触发请求

tt -p -i 1000(具体的请求对应的编号)

3.3 watch 监控方法,可查看入参、出参、异常

watch com.hongcheng.bigdata.startfish.controller.auth.LoginController login '{params,returnObj,throwExp}' -v -n 5 -x 3 '1==1'
watch -E .*UserInfoService getUserByUserName returnObj 'params[0]=="root"'
(单独returnObj会打印出详细的返回对象值)

命令解释:’{params,returnObj,throwExp}’ 表示观测对象,这里选择了入参、出参和异常,-n 5 表示观测到5次后停止,-x 3 表示打印观测对象的时候只打印3层嵌套结构,‘params[0]==“root”’ 为条件表达式,满足该条件的才会被观测到。

3.4trace 跟踪链路,查看当前方法体里具体调用了哪些方法

trace com.hongcheng.bigdata.startfish.controller.auth.LoginController logOut
(追踪该类的logOut方法)
trace com.hongcheng.bigdata.startfish.controller.auth.LoginController *
(追踪该类下的所有方法)

3.5 ognl 调用静态方法及静态成员变量(包括私有静态成员变量)
3.5.1若是普通java程序则直接下面语句执行

ognl ‘@xxx.xxx.XXXX@xxx‘
ognl ‘@@xxx.xxx.XXXX@size()

3.5.2若是web项目,在tomcat中则需要先找到所属类加载器
(ognl命令默认只会去 SystemClassLoader 里找类。 getstatic 命令会直接找所有JVM里加载的类,而tomcat的classloader是自己的,所以只有 getstatic 命令能找到。 ognl 命令要显式指定classloader 。)
注意:有些类可能因为未被用到而未被加载,导致sc找不到,可通过查找其他的类得到classloader,当前项目下classloader都是同一个

//先找到类的加载器
sc -d com.hongcheng.bigdata.startfish.controller.auth.LoginController
//可支持正则
sc -d -E .*?startfish.*?Constants
//再将找到的classloader的HashCode带上,调用静态成员变量
ognl -c 685f4c2e '@com.hongcheng.bigdata.startfish.controller.doc.DocController@LOG'
//调用静态方法  -x 2 用于显示返回值得具体值
ognl -c 685f4c2e '@com.hongcheng.bigdata.startfish.tools.PluginManagement@getPlugins()' -x 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值