Arthas(Java診斷工具)



官方文檔: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功能

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM