文章目录
arthas watch 观测命令
函数执行数据观测
观察表达式,默认值是{params, target, returnObj}
params 参数
target 观察的对象
returnObj 返回数据
例如:
watch com.demo.service.DempServiceImpl list
因为默认观察的为{params, target, returnObj} ,所以可以不写,或者可以写成{params,returnObj}
[x:] 指定输出结果的属性遍历深度,默认为 1,最大值是 4
watch 的参数-x :指定输出结果的属性遍历深度
例如:
watch com.demo.service.DempServiceImpl list -x 2
因为我们通常使用的返回对象不是一个简单类型,大多数是嵌套的,所以想要知道嵌套的属性就需要设置这个便利的深度
[b]、 [e]、[s]、 [f] 在函数调用前、后、异常、结束观察
[b] 在函数调用之前观察
例如:
watch com.demo.service.DempServiceImpl list -x 2 -b
[e] 在函数异常之后观察
例如:
watch com.demo.service.DempServiceImpl list -x 2 -e
[s] 在函数返回之后观察
例如:
watch com.demo.service.DempServiceImpl list -x 2 -s
[f] 在函数结束之后(正常返回和异常返回)观察
例如:
watch com.demo.service.DempServiceImpl list -x 2 -f
同时观察函数调用前和函数返回后
例如:
watch com.demo.service.DempServiceImpl list -x 2 -b -s -n 2
[m ] 指定 Class 最大匹配数量,默认值为 50。长格式为[maxMatch ]
例如:
watch com.demo.service.DempServiceImpl list -m 1
根据某些条件过滤观察
条件表达式的例子,可以过滤满足某些条件的才会观察
例如:
watch com.demo.service.DempServiceImpl list “{params[0],target}” “params[0]<0”
按照耗时进行过滤
例如:
watch com.demo.service.DempServiceImpl list ‘{params, returnObj}’ ‘#cost>200’ -x 2
观察当前对象中的属性
如果想查看函数运行前后,当前对象中的属性,可以使用target关键字,代表当前对象
例如:
watch com.demo.service.DempServiceImpl list ‘target’
然后使用target.field_name访问当前对象的某个属性
watch com.demo.service.DempServiceImpl list ‘target.illegalArgumentCount’