Arthas
是Alibaba開源的Java診斷工具,深受開發者喜好。 從Arthas上個版本發佈,已通過去兩個多月了,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編譯代碼bash
當 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鏡像了
參考: alibaba.github.io/arthas/dock…
以前的版本里,Arthas的重定向是會放到一個~/logs/arthas-cache/
目錄裏,違反直覺。
在新版本里,重定向和Linux下面的一致,>
/>>
的行爲也和Linux下一致。
而且,增長了 cat
/pwd
命令,能夠配置使用。
總之,3.1.0
版本的Arthas帶了很是多的新功能,改進了不少的用戶體驗,歡迎你們使用反饋。
Release Note: github.com/alibaba/art…
橫雲斷嶺的專欄,專一Java,Spring Boot,Arthas,Dubbo。