线上调试神器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

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

相关推荐
xiaogai_gai1 分钟前
采购业务退款单同步实战:从钉钉审批流到金蝶云星空付款单
java·数据库·钉钉
二哈赛车手22 分钟前
新人笔记---hermes定时功能设计,具体讲解以及可优化点
java·人工智能·笔记·spring·ai·typescript
ZWZhangYu27 分钟前
从 Dify 实践理解大模型上下文缓存
java·后端·spring
小羊没烦恼!1 小时前
关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁
java·服务器·网络·学习·负载均衡
Fuyo_11192 小时前
C++ AVL树保姆级详解:从平衡因子到四大旋转机制
java·c++·算法
Sarvartha2 小时前
Date、LocalDate、LocalTime、LocalDateTime、DateTimeFormatter类
java
阿俊-全栈开发3 小时前
LikeShop 多商户 Java 版商城微服务模块拆分与部署架构演进实践
java·微服务·架构·likeshop开源商城·多商户源码
Wang's Blog3 小时前
Java 项目实战:交友项目 - 联系人列表
java·开发语言·交友
我命由我123453 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
香蕉大香蕉(06敬畏市场)4 小时前
MySQL 单点详解(01)
java·数据库·mysql·面试·博客·实习