Arthas watch命令使用

目录

属性遍历深度

1、watch 类全限定名 方法名:遍历深度为1的入参、对象、返回信息

2、watch 类全限定名 方法名 -x n:观察遍历深度为n的入参、对象、返回信息

观察事件点

1、watch 类全限定名 方法名 params -x 2 -b:在方法调用前观察入参

2、watch 类全限定名 方法名 returnObj -x 2 -s:在方法返回后观察返回值

3、watch 类全限定名 方法名 '{params,throwExp}' -e -x 2:观察异常信息

条件表达式过滤

1、watch 类全限定名 方法名 params[0] "params[0]<0"

2、watch 类全限定名 方法名 params 'params.length==1'

3、watch 类全限定名 方法名 "{params,returnObj}" "params[0].equals('XXX')"


格式:watch 类全限定名 方法名 观察表达式 条件表达式

可以观察到的信息:方法入参、方法返回值、抛出的异常信息、调用方法的对象

观察表达式:默认{params, target, returnObj}

观察事件点

-b 方法调用前(观察入参时,方法中可能会有修改入参的操作)

-s 方法返回后

-e 方法抛出异常后

jad demo.MathGame查看源代码

属性遍历深度

1、watch 类全限定名 方法名:遍历深度为1的入参、对象、返回信息

watch demo.MathGame primeFactors

x 默认为1,等价于 watch demo.MathGame primeFactors -x 1

2、watch 类全限定名 方法名 -x n:观察遍历深度为n的入参、对象、返回信息

观察事件点

1、watch 类全限定名 方法名 params -x 2 -b:在方法调用前观察入参

观察表达式:单个值可以不加"{}",多个值需要加"{a,b,c}"。

因为观察事件点为-b方法调用前,所以返回值或异常均不存在

2、watch 类全限定名 方法名 returnObj -x 2 -s:在方法返回后观察返回值

 

3、watch 类全限定名 方法名 '{params,throwExp}' -e -x 2:观察异常信息

-e 方法抛出异常时才会有触发输出

条件表达式过滤

1、watch 类全限定名 方法名 params[0] "params[0]<0"

过滤出入参<0时的入参

2、watch 类全限定名 方法名 params 'params.length==1'

过滤出入参长度=1时的入参

3、watch 类全限定名 方法名 "{params,returnObj}" "params[0].equals('XXX')"

过滤出字符串参数的请求

eg:获取用户信息方法

观察用户名为“张三”的请求:watch com.zm.MyTest getUser "{params,returnObj}" "params[0].equals('张三')" -x 2

观察用户ID为9的请求:watch com.zm.MyTest getUser "{params,returnObj}" "params[1]==9" -x 2

private User getUser(String name, Integer id){};
  • 29
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值