[alibaba/arthas]arthas dump操作能够实时跟踪目标程序运行时间类字节码的波动情况

2023-12-15 818 views
3
环境信息
  • arthas-boot.jar或者as.sh的版本:3.6.7
  • 阿尔萨斯版本:3.6.7
  • 操作系统版本: mac m1 13.0.1
  • 目标进程的JVM版本:1.8.0_211
  • 执行arthas-boot的版本:3.6.7
删除问题的步骤

1.启动目标SpringBoot程序 2.分别通过arthas和dumpclass.jar的dump操作得到修改前类ApplicationFilterChain的字节码 3.通过agent的retransformClasses修改ApplicationFilterChain类的doFilter方法,更改全局过滤器,使得可以在web上操作目标程序的linux服务器

图像

4.再次分别通过arthas和dumpclass.jar的dump操作修改得到后类ApplicationFilterChain的字节码

图像

5.最终结果,arthas领先字节码没有变化,dumpclass领先字节码有变化

图像 预期的结果

期望arthas dump操作得到的运行时间类字节码同步有变化。

实际运行的结果

实际Arthas dump操作得到的结果对比无变化

回答

3
解决方案

您可以看到代码如下com/taobao/arthas/core/GlobalOptions.java,它可能会发挥作用。

/**
 * 是否支持dump被增强的类<br/>
 * 这个开关打开这后,每次增强类的时候都将会将增强的类dump到文件中,以便于进行反编译分析
 */
@Option(level = 1,
        name = "dump",
        summary = "Option to dump the enhanced classes",
        description =
                "This option enables the enhanced classes to be dumped to external file " +
                        "for further de-compilation and analysis."
)
public static volatile boolean isDump = false;

您可以从Arthas github下载Arthas源代码,并将isDump更改为true。请参考如何为Arthas做出贡献