arthas如何跟踪某个方法?并查看方法的入参和出参?

简介: arthas如何跟踪某个方法?并查看方法的入参和出参?

Arthas是一款由阿里巴巴开源的Java诊断工具,它允许开发者在不修改代码和不重启服务器的情况下解决线上问题。使用Arthas可以方便地跟踪某个方法并查看其入参和出参。以下是详细的步骤和说明:

  1. 启动Arthas:确保你已经安装了Arthas,并且能够通过命令行连接到目标Java进程。如果还没有安装,可以从Arthas官网下载并按照指南进行安装[^3^]。

  2. 使用watch命令:要跟踪某个方法并查看其入参和出参,可以使用Arthas的watch命令。具体的命令格式如下:

    watch [类全名] [包名] [方法名] "{params, returnObj}" -x [展开层数]
    

    其中:

    • [类全名]:要监控的类的全名。
    • [包名]:类的包名。
    • [方法名]:要监控的方法名。
    • "{params, returnObj}":表示要查看的是方法的参数列表和返回值对象。
    • -x [展开层数]:可选参数,表示要展开多少层调用栈信息。如果不加这个参数,那么只会显示一层调用栈的信息;如果加上-x N,那么会显示N层的调用栈信息[^1^][^2^][^4^][^5^]。
  3. 示例:假设你想要查看com.example.demo.service.UserService类的getUserById方法的入参和返回值,可以使用以下命令:

    watch com.example.demo.service.UserService getUserById "{params, returnObj}" -x 10
    

    这个命令会显示getUserById方法的入参和返回值,以及该方法被调用的位置(展开10层调用栈信息)[^2^][^4^][^5^]。

  4. 注意事项

    • 确保你有足够的权限来连接到目标Java进程,并且该进程没有受到防火墙或其他安全机制的限制。
    • 在使用watch命令时,请确保你了解要监控的方法及其可能的性能影响。虽然Arthas旨在最小化对生产环境的影响,但在高负载或敏感系统上使用时仍需谨慎。

总的来说,通过以上步骤,你可以使用Arthas轻松地跟踪某个方法并查看其入参和出参,从而帮助你更快地定位和解决问题。

目录
相关文章
|
9天前
|
监控 Java Spring
JVM如何监控某个方法的入参和相应结果?
JVM如何监控某个方法的入参和相应结果?
29 0
|
2月前
|
设计模式 Python
深度解密为什么实例在调用方法时会将自身传给 self 参数(二)
深度解密为什么实例在调用方法时会将自身传给 self 参数(二)
36 1
|
2月前
|
缓存 Python
深度解密为什么实例在调用方法时会将自身传给 self 参数(一)
深度解密为什么实例在调用方法时会将自身传给 self 参数
45 0
|
4月前
|
监控 Serverless 开发者
函数计算发布功能问题之查看函数的调用日志的问题如何解决
函数计算发布功能问题之查看函数的调用日志的问题如何解决
|
4月前
|
存储 前端开发 rax
函数过程的调用
函数过程的调用
通过普通方式调用和反射方式调用以及关闭检测后,通过反射方式调用的性能对比
通过普通方式调用和反射方式调用以及关闭检测后,通过反射方式调用的性能对比
|
监控 Cloud Native Java
字节码编程,Byte-buddy篇二《监控方法执行耗时动态获取出入参类型和值》
在前面的ASM、Javassist 章节中也有陆续实现过获取方法的出入参信息,但实现的方式还是偏向于字节码控制,尤其ASM,更是需要使用到字节码指令将入参信息压栈操作保存到局部变量用于输出,在这个过程中需要深入了解Java虚拟机规范,否则很不好完成这一项的开发。但!ASM也是性能最牛的。其他的字节码编程框架都是基于它所开发的。
707 0
字节码编程,Byte-buddy篇二《监控方法执行耗时动态获取出入参类型和值》
|
Arthas 测试技术
Arthas之Watch静态对象的值
如果在线上排查问题的时候,想获取某个类中的ThreadLocal静态对象的值、静态字段的值,如何获取呢?
1148 0
Arthas之Watch静态对象的值
|
开发者
Java-Agent 原理-统计方法调用时间 | 学习笔记
快速学习 Java-Agent 原理-统计方法调用时间
Java-Agent 原理-统计方法调用时间 | 学习笔记
JDK8启动时,参数传递过程
JDK8启动时,参数传递过程
60 0