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

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

相关推荐
sww_102610 小时前
Spring AI Structured-Output源码分析
java·人工智能·spring
IT_Octopus10 小时前
java 实体属性 Map 解决 mybatis-plus wrapper selectone 查mysql json类型为null 问题
java·mysql·mybatis
我的golang之路果然有问题11 小时前
Docker 之常用操作(实习中的)
java·运维·笔记·docker·容器·eureka
我命由我1234511 小时前
Kotlin 面向对象 - 装箱与拆箱
android·java·开发语言·kotlin·android studio·android jetpack·android-studio
天荒地老笑话么11 小时前
IntelliJ IDEA 运行 Tomcat 报错:Please, configure Web Facet first!
java·前端·tomcat·intellij-idea
cly111 小时前
使用 JAR 包部署 Java 应用(以 NginxWebUI 为例)
java·开发语言·jar
是一个Bug11 小时前
Java后端开发面试题清单(50道) - 分布式基础
java·分布式·wpf
有什么东东11 小时前
java-枚举类、抽象类、接口、内部类
java·开发语言
bxlj_jcj11 小时前
使用 Arthas + Heapdump + MAT 三步定位 Java 内存泄漏
java·开发语言·python