mirror of https://github.com/alibaba/arthas.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.0 KiB
2.0 KiB
演示Arthas里watch
命令中ognl
表达式的工作流程。用户可以自己修改Demo.java
里的表达式,再执行验证。
项目地址: https://github.com/hengyunabc/ognl-demo
打开Demo.java文件
src/main/java/com/example/ognl/Demo.java
{{open}}
编译运行代码
mvn compile exec:java
{{execute}}
输出结果包含ognl
表达式输出结果:
AtEnter, conditionExpress: params[0] > 1, conditionResult: true
@ArrayList[
@TestService[
],
@Object[][
@Integer[1000],
@String[hello],
@Student[
id=@Long[1],
name=@String[tom],
],
],
]
以上输出结果,对应在代码里的表达式是:
String watchExpress = "{target, params, returnObj, #cost}";
String conditionExpress = "params[0] > 1 && #cost > 0.1";
类似在arthas里执行下面的watch
命令:
watch com.example.ognl.TestService test "{target, params, returnObj, #cost}" "params[0] > 1 && #cost > 0.1" -x 3
查看函数抛出异常时的表达式结果
mvn compile exec:java -DexceptionCase=true
{{execute}}
The output:
AtExceptionExit, conditionExpress: params[0] > 1, conditionResult: true
@ArrayList[
@TestService[
],
@Object[][
@Integer[1000],
@String[hello],
@Student[com.example.ognl.Student@6e23bcdd],
],
java.lang.IllegalArgumentException: error
at com.example.ognl.TestService.test(TestService.java:12)
at com.example.ognl.Demo.test(Demo.java:43)
at com.example.ognl.Demo.main(Demo.java:20)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:254)
at java.base/java.lang.Thread.run(Thread.java:832)
,
]
代码里的表达式:
String watchExpress = "{target, params, throwExp}";
String conditionExpress = "params[0] > 1";
类似在arthas里执行下面的watch
命令:
watch com.example.ognl.TestService test "{target, params, throwExp}" "params[0] > 1" -e -x 2