目录
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){};