arthas Can not find tools.jar 使用報錯


原因是沒有安裝完整的jdk,當然重新安裝jdk應該也是可以的,

另一種方案是,下載一個完整的jdk8,解壓到當前目錄的 jdk8,使用命令   ./jdk8/bin/java -jar arthas-boot.jar 2404

就可以了 

 

啟動:

java -jar arthas-boot.jar [PID]

sc 和 sm

  • 通過sc可以查看已加載類的相關信息,比如該類是從哪個jar包加載的,被哪個類加載器加載的,以及是否是接口等等。
  • sm查看已加載類的方法詳情。

 

 

監控方法:

watch

  • 讓你能方便的觀察到指定方法的調用情況。能觀察到的范圍為:返回值、拋出異常、入參,通過編寫 OGNL 表達式進行對應變量的查看。
  • watch的使用姿勢比較豐富,可以在四個不同的場景觀察方法的執行。比如方法調用之前、方法調用之后、方法異常之后、方法結束之后。默認觀察的是方法結束之后。
  • 如果觀察的是方法結束之后的場景,由於入參可能在執行方法時被改變,所以此時輸出的可能不是真正的入參。因此,要看真正的入參,要看方法調用之前的,也就是加上-b的參數。
  • 另外,使用-b參數觀察的話,則觀察不到方法返回的結果以及拋出的異常了。

 

 

參數名稱	參數說明
class-pattern	類名表達式匹配
method-pattern	方法名表達式匹配
express	觀察表達式
condition-express	條件表達式
[b]	在方法調用之前觀察
[e]	在方法異常之后觀察
[s]	在方法返回之后觀察
[f]	在方法結束之后(正常返回和異常返回)觀察
[E]	開啟正則表達式匹配,默認為通配符匹配
[x:]	指定輸出結果的屬性遍歷深度,默認為 1
[n:]	只執行n次,默認會不斷輸出,除非用戶按下cltr+c

  

 

# 觀察CommonTest的test方法
# 輸出 入參、返回結果、拋出的異常 —— 輸出的內容可以動態調整
# 后面跟着的是 條件表達式,表示耗時超過10ms才輸出
# -n 表示只執行一次,-x表示 入參和返回結果的展開層次為5層
watch *.CommonTest test "{params,returnObj,throwExp}" '#cost>10' -x 5 -n 1

# 耗時大於10ms並且第一個參數等於1才輸出
watch *.CommonTest test "{params,returnObj,throwExp}" '#cost>10 && params[0]==1' -x 5 -n 1
# 第一個參數大於1 並且第二個參數等於hello才輸出
watch *.CommonTest test "{params,returnObj,throwExp}" 'params[0]>1 && params[1]=="hello"' -x 5 -n 1
# 第一個參數小於5或者第二個參數等於"world"就輸出
watch *.CommonTest test "{params,returnObj,throwExp}" 'params[0]<5 || params[1]=="wolrd"' -x 5 -n 1
# 第一個參數的name字段等於world時才輸出。
# 由於在方法執行過程中參數的name屬性可能發生改變,因此加上-b才能觀察到真正的入參
watch -b *.CommonTest test "{params,returnObj,throwExp}" 'params[0].name=="wolrd"' -x 5 -n 1

# 由於同時指定了-s和-b,所以方法被調用一次,就會輸出2次結果(兩個場景分開輸出),分別是方法被調用前,和返回之后
# 注意,這里如果-n只設置成1,那么只會輸出-b對應的輸出,-s對應的輸出由於沒有次數了就無法輸出了
watch *.CommonTest test '{params,returnObj,throwExp}' -x 5 -n 2 -s -b

  


免責聲明!

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



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