在arthas watch命令中,过滤功能主要通过条件表达式[condition-express]实现。这个条件表达式可以是基于Java表达式的,也可以是OGNL表达式,具体取决于Arthas的版本和上下文。条件表达式允许用户根据方法的参数、返回值等条件来过滤方法调用。 3. 构造一个示例请求,用于测试过滤功能 假设我们有一个UserService类,其中包含一个add...
<express> the content you want to watch, written by ognl. Examples: params params[0] 'params[0]+params[1]' '{params[0], target, returnObj}' returnObj throwExp target clazz method ### 添加条件表达式 <condition-express> Conditional expression in ognl style, for example: TRUE : 1==1 T...
入参是一个很容易把不同调用区分开的方法,通过 params[1]=="Arthas" 这个 condition-express,我们可以只保留第二个入参是 Arthas 的函数调用。 3. 同时观察入参和结果 代码语言:javascript 复制 [arthas@11939]$ watch org.apache.commons.lang3.StringUtils contains{params,returnObj}'params[1]=="Arthas"'#...
watch 的参数比较多,主要是因为它能在 4 个不同的场景观察对象 参数名称参数说明 class-pattern类名表达式匹配 method-pattern方法名表达式匹配 express观察表达式 condition-express条件表达式 [b]在方法调用之前观察 [e]在方法异常之后观察 [s]在方法返回之后观察 ...
按照示例 3 的 watch 语句执行,会发现 Arthas 直接抛了一个空指针: 复制 watch failed, conditionis: params[1].getHobbies().contains('pubg'), expressis: {params,returnObj}, java.lang.NullPointerException: targetisnullformethodcontains, visit /Users/xujingfeng/logs/arthas/arthas.logformore details....
condition-express 条件表达式 [E] 开启正则表达式匹配,默认为通配符匹配 [c:] 统计周期,默认值为 120 秒 [b] 在方法调用之前计算 condition-express [m ] 指定 Class 最大匹配数量,默认值为 50。长格式为[maxMatch ]。 monitor文档(help) 输入help monitor,返回的内容就是文档: ...
$ watch -v -x 2 demo.MathGame print 'params' 'params[0] > 100000' Press Q or Ctrl+C to abort. Affect(class count: 1 , method count: 1) cost in 29 ms, listenerId: 11 Condition express: params[0] > 100000 , result: false Condition express: params[0] > 100000 , result: false...
watch[-b][-e][-x <value>][-f][-h][-n <value>][-E][-M <value>][-s]class-pattern method-pattern express[condition-express]复制代码 1. 观察方法返回结果returnObj 使用方式看着复杂,其实很简单。来个最简单的示例: 假设我们要观察下面这段代码中字符串的contains方法。
观察表达式condition-express 条件表达式[b]在⽅法调⽤之前观察[e]在⽅法异常之后观察[s]在⽅法返回之后观察[f]在⽅法结束之后(正常返回和异常返回)观察[E]开启正则表达式匹配,默认为通配符匹配[x:]指定输出结果的属性遍历深度,默认为 1 $ watch demo.MathGame primeFactors "{params,returnObj}" -x ...
watch [-b] [-e] [-x <value>] [-f] [-h] [-n <value>] [-E] [-M <value>] [-s]class-patternmethod-patternexpress[condition-express] 1 观察方法返回结果returnObj 使用方式看着复杂,其实很简单。来个最简单的示例: 假设我们要观察下面这段代码中字符串的contains方法。