线上调试神器Arthas的watch命令简易教程

当你看到这篇文章的时候,我们默认你已经对Arthas有一定的了解和基础的使用。该文章只是对watch命令做一个简单的介绍以及附上案例。

watch 命令是阿里开源的 Java 诊断工具 Arthas 提供的一个功能,用于在运行时观察某个方法的参数和返回值,甚至可以观察方法的异常情况。通过 watch 命令,你可以实时监控指定方法的执行情况,从而帮助你诊断和分析问题。以下是 watch 命令的一般用法:

bash 复制代码
watch com.example.MyClass myMethod "{params,returnObj,throwExp}"

其中:

  • com.example.MyClass:表示类的全限定名,即要监控的方法所在的类。
  • myMethod:表示要监控的方法名。
  • "{params,returnObj,throwExp}":表示你希望观察的内容。你可以根据需要从以下三个选项中选择:
  • params:方法的参数。
  • returnObj:方法的返回值。
  • throwExp:方法抛出的异常。

以下是一个实际的示例:

假设你有一个简单的 Java 类 com.example.MyClass,其中有一个方法 divide:

java 复制代码
package com.example;

public class MyClass {
    public int divide(int dividend, int divisor) {
        return dividend / divisor;
    }
}

你可以使用 Arthas 的 watch 命令来观察这个方法的参数和返回值:

bash 复制代码
watch com.example.MyClass divide "{params,returnObj}"

当你执行这个命令后,每当 divide 方法被调用时,Arthas 会显示参数和返回值,类似如下的输出:

java 复制代码
Press Ctrl+C to abort.
1. Watching com.example.MyClass.divide(int,int)
2. 
3. Started watch successfully, will print the return value of com.example.MyClass.divide
4. when the method returns.
5. The return object is (Ljava/lang/Integer;)0

这样,你就可以在方法执行时观察参数和返回值,帮助你分析问题和调试代码。

相关推荐
雨白8 分钟前
Java 线程通信基础:interrupt、wait 和 notifyAll 详解
android·java
架构师沉默4 小时前
设计多租户 SaaS 系统,如何做到数据隔离 & 资源配额?
java·后端·架构
Java中文社群6 小时前
重要:Java25正式发布(长期支持版)!
java·后端·面试
每天进步一点_JL7 小时前
JVM 类加载:双亲委派机制
java·后端
用户298698530147 小时前
Java HTML 转 Word 完整指南
java·后端
渣哥7 小时前
原来公平锁和非公平锁差别这么大
java
渣哥8 小时前
99% 的人没搞懂:Semaphore 到底是干啥的?
java
J2K8 小时前
JDK都25了,你还没用过ZGC?那真得补补课了
java·jvm·后端
kfyty7258 小时前
不依赖第三方,不销毁重建,loveqq 框架如何原生实现动态线程池?
java·架构
isysc19 小时前
面了一个校招生,竟然说我是老古董
java·后端·面试