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
为例:
使用 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
横云断岭的专栏,专注 Java, Spring Boot, Arthas, Dubbo