如何使用Arthas抓包

举报
Leef724 发表于 2020/11/05 10:18:53 2020/11/05
【摘要】 转载自arthas网: https://segmentfault.com/a/1190000014618329 watch 的参数比较多,主要是因为它能在 4 个不同的场景观察对象参数名称参数说明class-pattern类名表达式匹配method-pattern方法名表达式匹配express观察表达式condition-express条件表达式[b]在方法调用之前观察[e]在方法异常之后观...

转载自arthas网 https://segmentfault.com/a/1190000014618329

watch 的参数比较多,主要是因为它能在 4 个不同的场景观察对象

参数名称 参数说明
class-pattern 类名表达式匹配
method-pattern 方法名表达式匹配
express 观察表达式
condition-express 条件表达式
[b] 方法调用之前观察
[e] 方法异常之后观察
[s] 方法返回之后观察
[f] 方法结束之后(正常返回和异常返回)观察
[E] 开启正则表达式匹配,默认为通配符匹配
[x:] 指定输出结果的属性遍历深度,默认为 1

这里重点要说明的是观察表达式,观察表达式的构成主要由 ognl 表达式组成,所以你可以这样写"{params,returnObj}",只要是一个合法的 ognl 表达式,都能被正常支持。

观察方法出参和返回值

 watch demo.MathGame primeFactors "{params,returnObj}" -x 2

观察方法入参,加上 -b 参数

watch demo.MathGame primeFactors "{params,returnObj}" -x 2 -b

同时观察方法调用前和调用后

watch demo.MathGame primeFactors "{params,target,returnObj}" -x 2 -b -s -n 2
  • 参数里-n 2,表示只执行两次

  • 这里输出结果中,第一次输出的是方法调用前的观察表达式的结果,第二次输出的是方法返回后的表达式的结果

  • 结果的输出顺序和事件发生的先后顺序一致,和命令中 -s -b 的顺序无关

条件表达式

watch demo.MathGame primeFactors "{params[0],target}" "params[0]<0"

捕获异常

watch demo.MathGame primeFactors "{params[0],throwExp}" -e -x 2

利用耗时过滤

watch demo.MathGame primeFactors '{params, returnObj}' '#cost>200' -x 2

观察当前对象中的属性,‘target’ 关键字表示当前对象

watch demo.MathGame primeFactors 'target'

访问某个属性

watch demo.MathGame primeFactors 'target.illegalArgumentCount'


参考文献: https://segmentfault.com/a/1190000014618329



【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。