命令说明:
方便观察知道函数的调用情况。能观察到的范围为:返回值、抛出异常、入参,通过编写ognl表达式进行对应变量的查看
参数说明:
示例: watch com.HelloArthasService hello '{params,returnObj,throwExp}' -f -x 3
| 参数名称 | 参数说明 | 示例 |
|---|---|---|
| class-pattern | 类名表达式匹配 | com.HelloArthasService |
| method-pattern | 函数名表达式匹配 | hello |
| express | 观察表达式,默认值是{params, target, returnObj} | {params,returnObj,throwExp} |
| condition-express | 条件表达式 | -f -x 3 |
| [b] | 在函数调用之前观察 | |
| [e] | 在函数异常之后观察 | |
| [s] | 在函数返回之后观察 | |
| [f] | 在函数结束之后(正常返回和异常返回)观察 | |
| [E] | 开启正则表达式匹配,默认为通配符匹配 | |
| [x:] | 指定输出结果的属性遍历深度,默认为1 | 3,数字越大深度越深,深度过浅输出的结果为地址值,可根据实际返回深度进行设置 |
- 特殊用法请参考:github.com/alibaba/art…
- OGNL表达式官网:commons.apache.org/proper/comm…
特别说明:
- watch命令定义了4个观察点,即
-b函数调用之前,-e函数异常后,-s函数返回后,-f函数结束后 - 4个观察点
-b、-e、-s默认关闭,-f默认打开,当知道观察点被打开后,在相应事件点会对观察表达式进行求值并输出 - 这里要注意
函数入参和函数出参的区别,有可能在中间被修改导致前后不一致,除了-b事件点params代表函数入参外,其余事件都代表函数出参 - 当使用
-b时,由于观察事件点是在函数调用之前,此时返回值或异常均不存在 - 在watch命令的结果里,会打印出
location信息。location有三种可能值:AtEnter(应函数入口),AtExit(函数正常return),AtExceptionExit(函数抛出异常)。
开发工具IntelliJ IDEA中使用插件生成命令
- 安装插件
arthas idea - 选中需要观测的函数右击鼠标找到
Arthas Command,选择Arthas Command下的Watch
- 到服务器中启动arthas粘贴即可
注:更多参数可使用命令watch -h 查看
注意使用完Arthas一定要用stop命令退出否则arthas将一直占用线程,下一次启动之前需要先stop才能启动