一,Watch命令
1.1 命令示例
watch com.MathGame primeFactors rerankSizeLimit '{params,returnObj,throwExp}' -n 5 -x 3
1.2 查看集合类型
watch com.MathGame primeFactors rerankSizeLimit '{params,returnObj.{#this.id},throwExp}' -n 5 -x 3
1.3 查看条件判断
watch com.MathGame primeFactors rerankSizeLimit '{params,returnObj.{#this.id},throwExp}' 'params[0].id == "123456"' -n 5 -x 3
1.4 查看参数返回前、返回后的值
watch com.MathGame primeFactors rerankSizeLimit '{params,returnObj,throwExp}' -b -s -n 5 -x 3
其中-s为返回后,-b为返回前,可以同时观测,返回内容不受-b -s先后位置影响。
二,OGNL命令
2.1 使用参考
- OGNL 特殊用法请参考:github.com/alibaba/art…
- OGNL 表达式官方指南:commons.apache.org/proper/comm…
2.2 调用静态函数
$ ognl '@java.lang.System@out.println("hello")'
null
2.3 获取静态类的静态字段
$ ognl '@demo.MathGame@random'
@Random[
serialVersionUID=@Long[3905348978240129619],
seed=@AtomicLong[125451474443703],
multiplier=@Long[25214903917],
addend=@Long[11],
mask=@Long[281474976710655],
DOUBLE_UNIT=@Double[1.1102230246251565E-16],
BadBound=@String[bound must be positive],
BadRange=@String[bound must be greater than origin],
BadSize=@String[size must be non-negative],
seedUniquifier=@AtomicLong[-3282039941672302964],
nextNextGaussian=@Double[0.0],
haveNextNextGaussian=@Boolean[false],
serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],
unsafe=@Unsafe[sun.misc.Unsafe@28ea5898],
seedOffset=@Long[24],
]
三,options命令
| 名称 | 默认值 | 描述 |
|---|---|---|
| unsafe | false | 是否支持对系统级别的类进行增强,打开该开关可能导致把 JVM 搞挂,请慎重选择! |
| dump | false | 是否支持被增强了的类 dump 到外部文件中,如果打开开关,class 文件会被 dump 到/${application working dir}/arthas-class-dump/目录下,具体位置详见控制台输出 |
| batch-re-transform | true | 是否支持批量对匹配到的类执行 retransform 操作 |
| json-format | false | 是否支持 json 化的输出 |
| disable-sub-class | false | 是否禁用子类匹配,默认在匹配目标类的时候会默认匹配到其子类,如果想精确匹配,可以关闭此开关 |
| support-default-method | true | 是否支持匹配到 default method, 默认会查找 interface,匹配里面的 default method。参考 #1105在新窗口打开 |
| save-result | false | 是否打开执行结果存日志功能,打开之后所有命令的运行结果都将保存到~/logs/arthas-cache/result.log中 |
| job-timeout | 1d | 异步后台任务的默认超时时间,超过这个时间,任务自动停止;比如设置 1d, 2h, 3m, 25s,分别代表天、小时、分、秒 |
| print-parent-fields | true | 是否打印在 parent class 里的 filed |
| verbose | false | 是否打印更多详细信息 |
| strict | true | 是否启用 strict 模式 |