博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Alibaba Arthas 3.1.0版本:在线教程、内存编绎器和强大的自动补全
阅读量:7232 次
发布时间:2019-06-29

本文共 1802 字,大约阅读时间需要 6 分钟。

Arthas

Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。

从Arthas上个版本发布,已经过去两个多月了,Arthas 3.1.0版本不仅带来大家投票出来的新LOGO,还带来强大的新功能和更好的易用性,下面一一介绍。

  • Github:
  • 文档:

在线教程

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

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

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

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

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

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

以 里的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 /tmpMemory compiler output:/tmp/com/example/demo/arthas/user/UserController.classAffect(row-cnt:1) cost in 346 ms
  4. 使用redefine命令,因为可以热更新代码

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

丝滑的自动补全

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

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

$ watchcom.   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加到自己的基础镜像里

参考:

重定向重新设计

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

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

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

总结

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

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

Release Note:

转载地址:http://ifvfm.baihongyu.com/

你可能感兴趣的文章
加入一个团队时要弄清楚自己在团队中投入的级别是什么, 别人的期望值是什么. 不要拿着卖白菜的钱, 操那卖白粉的心(转)...
查看>>
expect基础教程
查看>>
20款超酷的jQuery插件-随心所欲
查看>>
python urllib2查询数据
查看>>
Tomcat启动时卡在“INFO: Deploying web application directory ......”的解决方法
查看>>
Java开发必会的Linux命令(转)
查看>>
Animation在每一帧中的执行顺序测试
查看>>
js如何遍历并取出对象的属性名?
查看>>
最小生成树的一些证明
查看>>
第一次发布
查看>>
PHP 错误记录1
查看>>
关于MongoDB分布式高可用集群实现
查看>>
虚方法、隐藏方法、抽象方法、密封方法、派生类中访问基类成员
查看>>
[WinForm]Dundas Chart控件学习(附源码)
查看>>
数字处理类
查看>>
EasyUI
查看>>
ubuntu16.04 Cmake学习二
查看>>
在linux系统中I/O 调度的选择
查看>>
NOIP2016模拟 星际争霸(二分)
查看>>
css-背景类样式
查看>>