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