Alibaba开源的Java诊断工具 -- Arthas

Arthas 是Alibaba开源的Java诊断工具,方便开发者进行问题的定位和诊断。用户文档:https://arthas.aliyun.com/doc/

热编译: https://developer.aliyun.com/article/690240 

可以

  1. 查看方法调用情况
  2. 查看方法入参
  3. 反编译源码
  4. 查看系统的运行状况
  5. 监控到JVM的实时运行状态
  6. 。。。

安装

  • 方法一,使用arthas-boot(推荐):

     wget https://alibaba.github.io/arthas/arthas-boot.jar  
      java -jar arthas-boot.jar

    方法二,使用as.sh:

  • curl -L https://alibaba.github.io/arthas/install.sh | sh

     

idea中安装Alibaba Cloud Toolkit

安装成功后会有以下图

 

 

 其中Upload上传文件,  更多里的Diagnostic诊断代码;

 

使用arthas修复线上代码

 

替换代码的流程:

1、jad命令 将需要更改的文件先进行反编译,保存下来 ,编译器修改

$ jad --source-only com.chitic.supplywater.common.controller.DahuaApiImpl > /tmp/common/DemoApplication.java

修改完以后需要将类重新加载到JVM

2、SC命令 查找当前类是哪个classLoader加载的

$ sc -d com.chitic.supplywater.common.controller.DahuaApiImpl | grep classLoader

classLoaderHash 20ad9418 #类加载器 编号

3、MC命令 用指定的classloader重新将类在内存中编译

$ mc -c 20ad9418 /tmp/common/DemoApplication.java -d /tmp/common 
Memory compiler output:
/tmp/common/com/chitic/supplywater/common/controller/DemoApplication.class

 

注意:mc编译可能出错,可以在本地编译好然后上传到服务器


4、redefine命令 将编译后的类加载到JVM

上边编译后的.class文件地址

$ redefine -c 20ad9418 /tmp/common/com/chitic/supplywater/common/controller/DemoApplication.class redefine success, size: 1

 

 

posted @ 2020-09-30 10:38  高木子  阅读(742)  评论(0编辑  收藏  举报