V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hengyunabc
V2EX  ›  开源软件

Alibaba Arthas 3.1.0 版本:在线教程、内存编译器和强大的自动补全

  •  
  •   hengyunabc · 2019-02-14 15:01:36 +08:00 · 2495 次点击
    这是一个创建于 2141 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Arthas

    Arthas是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。 从 Arthas 上个版本发布,已经过去两个多月了,Arthas 3.1.0 版本不仅带来大家投票出来的新 LOGO,还带来强大的新功能和更好的易用性,下面一一介绍。

    在线教程

    在新版本 Arthas 里,增加了在线教程,用户可以在线运行 Demo,一步步学习 Arthas 的各种用法,推荐新手尝试:

    非常欢迎大家来完善这些教程。

    增加内存编译器支持,在线编辑热更新代码

    3.1.0版本里新增命令mc,不是方块游戏 mc,而是 Memory Compiler。

    在之前版本里,增加了redefine命令,可以热更新字节码。但是有个不方便的地方:需要把.class文件上传到服务器上。

    3.1.0版本里,结合jad/mc/redefine 可以完美实现热更新代码。

    Arthas 在线教程 里的UserController为例:

    1. 使用 jad 反编译代码

      jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
      
    2. 使用 vim 编译代码

      当 user id 小于 1 时,也正常返回,不抛出异常:

          @GetMapping("/user/{id}")
          public User findUserById(@PathVariable Integer id) {
              logger.info("id: {}" , id);
      
              if (id != null && id < 1) {
                  return new User(id, "name" + id);
                  // throw new IllegalArgumentException("id < 1");
              } else {
                  return new User(id, "name" + id);
              }
          }
      
    3. 使用mc命令编译修改后的UserController.java

      $ mc /tmp/UserController.java -d /tmp
      Memory compiler output:
      /tmp/com/example/demo/arthas/user/UserController.class
      Affect(row-cnt:1) cost in 346 ms
      
    4. 使用redefine命令,因为可以热更新代码

      $ redefine /tmp/com/example/demo/arthas/user/UserController.class
      redefine success, size: 1
      

    丝滑的自动补全

    在新版本里,改进了很多命令的自动补全,比如 watch/trace/tt/monitor/stack等。

    下面是 watch 命令的第一个Tab补全结果,用户可以很方便的一步步补全类名,函数名:

    $ watch
    com.   sun.   javax. ch.    io.    demo.  jdk.   org.   java.
    

    另外,新增加了 jad/sc/sm/redefine 等命令的自动补全支持,多按Tab有惊喜。

    新版本的 Web console

    新版本的 Web Console 切换到了xtermd.js,更好地支持现代浏览器。

    • 支持Ctrl + C复制
    • 支持全屏

    web console

    Docker 镜像支持

    Arthas 支持 Docker 镜像了

    • 用户可以很方便地诊断 Docker/k8s 里的 Java 进程
    • 也可以很方便地把 Arthas 加到自己的基础镜像里

    参考: https://alibaba.github.io/arthas/docker.html

    重定向重新设计

    之前的版本里,Arthas 的重定向是会放到一个~/logs/arthas-cache/目录里,违反直觉。

    在新版本里,重定向和 Linux 下面的一致,>/>>的行为也和 Linux 下一致。

    并且,增加了 cat/pwd命令,可以配置使用。

    总结

    总之,3.1.0版本的 Arthas 带了非常多的新功能,改进了很多的用户体验,欢迎大家使用反馈。

    • Arthas 在线教程可以学到很多技巧
    • jad/mc/redefine 一条龙非常强大
    • 丝滑的自动补全值得尝试
    • 新版本的 Web Console 有惊奇

    Release Note: https://github.com/alibaba/arthas/releases/tag/3.1.0

    公众号

    横云断岭的专栏,专注 Java, Spring Boot, Arthas, Dubbo

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3145 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:37 · PVG 08:37 · LAX 16:37 · JFK 19:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.