arthas watch 入参和返回值
时间: 2024-08-14 22:02:04 浏览: 93
`arthas watch` 是阿里巴巴开源的一款JVM动态探针工具,它允许开发者实时监控应用运行时的状态,特别是对于一些关键的服务方法,可以监视其入参、执行时间、返回结果等信息。以下是 `arthas watch` 的基本使用:
**入参 (Arguments):**
当你启动 `arthas watch [方法名]` 或者 `watch -m [方法名]` 命令时,需要指定要监控的方法。例如:
```
arthas watch com.example.MyService.myMethod
```
这里的 `com.example.MyService.myMethod` 就是指定了要监控的目标方法。你需要提供完整的类路径和方法名称。
**返回值 (Return Value):**
默认情况下,`arthas watch` 会记录每次方法被调用后的返回值,但这通常需要在方法内部显式地设置,因为 JVM 并不会自动保存每个方法的返回值。你可以通过自定义插件或者对方法做特殊修改来达到这个目的。
**其他选项:**
除了基本的入参和返回值,`arthas watch` 还支持设置阈值、打印频率、过滤条件等功能,帮助你定制化监控策略。
**相关问题--:**
1. 如何配置 `arthas watch` 来只显示特定类型的返回值?
2. 是否可以同时监控多个方法的调用情况?
3. `arthas watch` 支持哪些高级功能?
相关问题
arthas watch命令能看方法中具体某一步吗
Arthas 的 `watch` 命令是一个强大的监控工具,它可以用来观察 Java 应用程序中方法的执行情况,包括方法调用参数、返回值、异常信息以及方法执行耗时等。使用 `watch` 命令可以实现对方法中具体某一步的观察,因为它允许你监控方法在执行过程中的任何阶段。
`watch` 命令的基本语法如下:
```
watch 类全路径 方法名 '{条件表达式}' '{执行表达式}'
```
- `类全路径`:指定要监控的类的全限定名。
- `方法名`:要监控的方法名。
- `条件表达式`:可选,用来指定触发条件的表达式。
- `执行表达式`:监控到方法调用时会执行的表达式。
当方法满足条件表达式时,会执行执行表达式,并将结果打印出来。执行表达式可以获取到方法调用的参数、返回值、抛出的异常等信息,这样你就可以观察到方法中的具体执行步骤。
例如,如果你想监控 `com.example.TestClass` 类中的 `testMethod` 方法,并且只关注当方法返回值大于0时的情况,可以使用如下命令:
```
watch com.example.TestClass testMethod '{returnObj > 0}' '{}'
```
这将输出满足条件的 `testMethod` 方法的返回值。
arthas常用命令
以下是Arthas常用命令的介绍和用例:
1. help命令:查看Arthas支持的所有命令和用法。
```shell
help
```
2. jad命令:反编译指定类的字节码。
```shell
jad com.example.demo.DemoController
```
3. watch命令:监控指定方法的参数和返回值。
```shell
watch com.example.demo.DemoService hello "{params,returnObj}"
```
4. trace命令:跟踪指定方法的调用链。
```shell
trace com.example.demo.DemoService hello
```
5. monitor命令:监控指定方法的调用次数、耗时和异常信息。
```shell
monitor com.example.demo.DemoService hello
```
6. tt命令:统计指定方法的调用次数、耗时和异常信息,并以Top列表的形式展示。
```shell
tt -n 5 com.example.demo.DemoService hello
```
7. thread命令:查看当前线程的堆栈信息。
```shell
thread
```
8. heapdump命令:生成堆转储文件,用于分析内存问题。
```shell
heapdump /tmp/dump.hprof
```
9. dashboard命令:查看应用的实时监控信息。
```shell
dashboard
```
阅读全文