Arthas进阶

官网资料是最全的,这里做一下笔记整理记录下

1. 启动demo程序

    本次启动的demo程序是带有web页面的spring-boot demo,开启的端口是80,源码地址

1 wget https://github.com/hengyunabc/spring-boot-inside/raw/master/demo-arthas-spring-boot/demo-arthas-spring-boot.jar
2 java -jar demo-arthas-spring-boot.jar

2. 启动Arthas服务

1 wget https://arthas.aliyun.com/arthas-boot.jar
2 java -jar arthas-boot.jar --target-ip 0.0.0.0

3. 查看jvm信息

  • sysprop 

      sysprop 可以打印所有的System properties信息。也可以指定单个key: sysprop java.version ,也可以通过grep来过滤 sysprop |grep user ,还可以设置新的值: sysprop testKey testValue 

  • sysenv

       sysenv 命令可以获取环境变量,与 sysprop 类似

  • jvm

       jvm 可以打印出jvm的各种详细信息

 

 

 

 

 4. 使用Tips

  • 使用命令的help,比如sysprop -h
  • 使用自动补全,在使用有疑惑时,可以输入Tab来获取更多信息。比如输入 sysprop java. 之后,再输入Tab,会补全出对应的key:

  • readline的快捷键支持。Arthas支持常见的命令行快捷键,比如Ctrl + A跳转行首,Ctrl + E跳转行尾。更多的快捷键可以用 keymap 命令查看。
  • 历史命令补全。如果想再执行之前的命令,可以在输入一半时,按Up/↑ 或者 Ddown/↓,来匹配到之前的命令。如果想查看所有的历史命令,也可以通过 history命令查看到。
  • pipeline支持。比如sysprop | grep java 和 sysprop | wc -l

5. sc/sm查看已加载的类

      sc  命令可以查找到所有JVM已经加载到的类。

     如果搜索的是接口,还会搜索所有的实现类。比如查看所有的Filter实现类:

1 sc javax.servlet.Filter

     通过-d参数,可以打印出类加载的具体信息,很方便查找类加载问题。

1 sc -d javax.servlet.Filter

     sc支持通配,比如搜索所有的StringUtils:

1 sc *StringUtils

     sm 命令则是查找类的具体函数。比如:

1 sm java.math.RoundingMode

    通过-d参数可以打印函数的具体属性:

1 sm -d java.math.RoundingMode

    也可以查找特定的函数,比如查找构造函数:

1 sm java.math.RoundingMode <init>

 

6. jad反编译

    可以通过 jad 命令来反编译代码:

1 jad com.example.demo.arthas.user.UserController

      通过--source-only参数可以只打印出在反编译的源代码:

1 jad --source-only com.example.demo.arthas.user.UserController

7. ognl

    在Arthas里,有一个单独的ognl命令,可以动态执行代码。

     调用静态方法 ognl '@java.lang.System@out.println("hello ognl")' ,可以看到在demo应用控制台输出中输出了这个信息

 

 

 

补充一个官网的在线练习地址

 

posted @ 2020-09-03 15:34  衰草寒烟  阅读(232)  评论(0编辑  收藏  举报