在不知道Arthas之前
- 如果線上出bug,無法debug的情況,需要重新打日志發(fā)布?
- 修改的代碼沒有執(zhí)行到,線上的代碼和本地不一樣?
- 怎么監(jiān)控JVM實(shí)時(shí)運(yùn)行狀態(tài)?
這些問題都在折磨著我們,你如果沒有其他的更好方案或者方法解決,Arthas[1] 適合你。
基礎(chǔ)用法
- 下載arthas-demo 使用java -jar啟動(dòng)
curl -O https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
選擇你需要attach的目標(biāo)進(jìn)程,(3395進(jìn)程是本地啟動(dòng)的一個(gè)java應(yīng)用)

image.png
選擇1 之后

image.png
- 觀察線程3395 java應(yīng)用中一個(gè)接口的入?yún)⒑统鰠?/li>
watch 接口全限定名 接口名 "{params,returnObj}" -x 2

image.png
- 反編譯 java應(yīng)用中的一個(gè)類。
jad 接口全限定名

image.png
- 查看當(dāng)前jvm 相關(guān)信息
jvm
命令總覽

image.png
最后
命令太多記不住怎么辦? IDE插件助你騰飛 ——Idea arthas 插件插件安裝指南。
右鍵 - > 選擇對(duì)應(yīng)的操作,命令已經(jīng)復(fù)制,去粘貼就好了。

image.png
參考:https://github.com/alibaba/arthas/issues/1003
? ? ? ? https://alibaba.github.io/arthas/
-
Arthas支持JDK 6+,支持Linux/Mac/Winodws,采用命令行交互模式,同時(shí)提供豐富的 Tab 自動(dòng)補(bǔ)全功能,進(jìn)一步方便進(jìn)行問題的定位和診斷 ?