Arthas 自2018年9月份上线以来「传送门」,已收获近万个star,感谢开发者们的承认。这次Arthas 3.1.0版本的发布,不只带来你们投票出来的新LOGO,还带来强大的新功能和更好的易用性,下面一一介绍。html
在新版本Arthas里,增长了在线教程,用户能够在线运行Demo,一步步学习Arthas的各类用法,推荐新手尝试:java
很是欢迎你们来完善这些教程。git
3.1.0
版本里新增命令mc
,不是方块游戏mc,而是Memory Compiler。github
在以前版本里,增长了redefine
命令,能够热更新字节码。可是有个不方便的地方:须要把.class
文件上传到服务器上。web
在3.1.0
版本里,结合jad
/mc
/redefine
能够完美实现热更新代码。docker
以 Arthas在线教程 里的UserController
为例:vim
使用jad反编译代码浏览器
jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
使用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); } }
使用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
使用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切换到了xtermd.js
,更好地支持现代浏览器。
Ctrl + C
复制Arthas支持Docker镜像了
参考: https://alibaba.github.io/arthas/docker.html
以前的版本里,Arthas的重定向是会放到一个~/logs/arthas-cache/
目录里,违反直觉。
在新版本里,重定向和Linux下面的一致,>
/>>
的行为也和Linux下一致。
而且,增长了 cat
/pwd
命令,能够配置使用。
总之,3.1.0
版本的Arthas带了很是多的新功能,改进了不少的用户体验,欢迎你们使用反馈。
Release Note: https://github.com/alibaba/arthas/releases/tag/3.1.0
断岭,社区ID hengyunabc,阿里巴巴技术专家,目前主要负责 Arthas 开源项目的开发和社区维护。
原文连接 更多技术干货 请关注阿里云云栖社区微信号 :yunqiinsight