官方文檔:https://arthas.aliyun.com/doc/quick-start.html#demo
一、快速開始
watch(方法執行數據觀測) watch 類全路徑 方法名 returnObj 觀察方法返回結果 watch demo.MathGame primeFactors "{params,returnObj}" -x 2 觀察方法出參和返回值, -x 2為打印結果深度,默認為1; watch demo.MathGame primeFactors "{params[0],target}" "params[0]<0" 觀察第一個參數params[0]<0時的實例 watch demo.MathGame primeFactors '{params, returnObj}' '#cost>200' 觀察耗時大於200ms的情況 watch demo.MathGame primeFactors 'target.illegalArgumentCount' 觀察當前對象的某個屬性 watch demo.MathGame * '{params,@demo.MathGame@random.nextInt(100)}' -v -n 1 -x 2 獲取類的靜態字段、調用類的靜態方法
其他參數還有:
-b 在方法執行前 -e 方法異常后 -s 方法返回后 -f 在方法結束之后(正常返回和異常返回)觀察,默認開啟 -v 打印更多信息
"{params,returnObj}"是觀察表達式,可選的參數有:
loader 本次調用類所在的 ClassLoader clazz 本次調用類的 Class 引用 method 本次調用方法反射引用 target 本次調用類的實例 params 本次調用參數列表,這是一個數組,如果方法是無參方法則為空數組 returnObj 本次調用返回的對象。當且僅當 isReturn==true 成立時候有效,表明方法調用是以正常返回的方式結束。如果當前方法無返回值 void,則值為 null throwExp 本次調用拋出的異常。當且僅當 isThrow==true 成立時有效,表明方法調用是以拋出異常的方式結束。 isBefore 輔助判斷標記,當前的通知節點有可能是在方法一開始就通知,此時 isBefore==true 成立,同時 isThrow==false 和 isReturn==false,因為在方法剛開始時,還無法確定方法調用將會如何結束。 isThrow 輔助判斷標記,當前的方法調用以拋異常的形式結束。 isReturn 輔助判斷標記,當前的方法調用以正常返回的形式結束。
二、命令參考
monitor 方法執行監控,數據統計用 watch 方法執行數據觀測 trace 方法內部調用路徑,並輸出方法路徑上的每個節點上耗時 stack 輸出當前方法被調用的調用路徑 tt 方法執行數據的時空隧道,記錄下指定方法每次調用的入參和返回信息,並能對這些不同的時間下調用進行觀測 help 查看所有命令 dashboard 展示當前進程的信息 thread 1 獲取線程信息,1通常是main函數 jad 類全路徑 反編譯類
基礎命令
help 查看命令幫助信息
cat 打印文件內容,和linux里的cat命令類似
echo 打印參數,和linux里的echo命令類似
grep 匹配查找,和linux里的grep命令類似
base64 base64編碼轉換,和linux里的base64命令類似
tee 復制標准輸入到標准輸出和指定的文件,和linux里的tee命令類似
pwd 返回當前的工作目錄,和linux命令類似
cls 清空當前屏幕區域
session 查看當前會話的信息
reset 重置增強類,將被 Arthas 增強過的類全部還原,Arthas 服務端關閉時會重置所有增強過的類
version 輸出當前目標 Java 進程所加載的 Arthas 版本號
history 打印命令歷史
quit 退出當前 Arthas 客戶端,其他 Arthas 客戶端不受影響
stop 關閉 Arthas 服務端,所有 Arthas 客戶端全部退出
keymap Arthas快捷鍵列表及自定義快捷鍵
options 查看或設置Arthas全局開關
class/classloader相關
sc 查看JVM已加載的類信息,參數*則為所有,可以有前綴 sm 查看已加載類的方法信息 mc 內存編譯器,內存編譯.java文件為.class文件 retransform 加載外部的.class文件,retransform到JVM里 redefine 加載外部的.class文件,redefine到JVM里 dump dump 已加載類的 byte code 到特定目錄 classloader 查看classloader的繼承樹,urls,類加載信息,使用classloader去getResource
jvm相關
dashboard 當前系統的實時數據面板
thread 查看當前 JVM 的線程堆棧信息
jvm 查看當前 JVM 的信息
sysprop 查看和修改JVM的系統屬性
sysenv 查看JVM的環境變量
vmoption 查看和修改JVM里診斷相關的option
perfcounter 查看當前 JVM 的Perf Counter信息
logger 查看和修改logger
getstatic 查看類的靜態屬性
ognl 執行ognl表達式
mbean 查看 Mbean 的信息
heapdump dump java heap, 類似jmap命令的heap dump功能