debug技巧之使用Arthes除錯

sum墨發表於2024-05-22

一、前言

大家好啊,我是summo,今天給大家分享一下我平時是怎麼除錯程式碼的,不是權威也不是教學,就是簡單分享一下,如果大家還有更好的除錯方式也可以多多交流哦。

前面我介紹了本地除錯和遠端除錯,今天再加一種:利用Arthes進行除錯。

二、Arthes是什麼?

以下是Arthes官網原文:

通常,本地開發環境無法訪問生產環境。如果在生產環境中遇到問題,則無法使用 IDE 遠端除錯。更糟糕的是,在生產環境中除錯是不可接受的,因為它會暫停所有執行緒,導致服務暫停。
開發人員可以嘗試在測試環境或者預發環境中復現生產環境中的問題。但是,某些問題無法在不同的環境中輕鬆復現,甚至在重新啟動後就消失了。
如果您正在考慮在程式碼中新增一些日誌以幫助解決問題,您將必須經歷以下階段:測試、預發,然後生產。這種方法效率低下,更糟糕的是,該問題可能無法解決,因為一旦 JVM 重新啟動,它可能無法復現,如上文所述。
Arthas 旨在解決這些問題。開發人員可以線上解決生產問題。無需 JVM 重啟,無需程式碼更改。 Arthas 作為觀察者永遠不會暫停正在執行的執行緒。

官網地址如下:Arthes

三、怎麼使用arthes?

1. 安裝arthes

下載arthas-boot.jar,然後用java -jar的方式啟動:

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

啟動之後,如下

它這裡會將正在執行的Java程序列印出來,我們輸入"1"按下"enter"就可以進入除錯介面了

2. 一些基礎命令

(1)反編譯java類

命令格式:jad 包路徑+類名

這個命令可以將線上的class檔案反編譯回來,保證線下線上的程式碼是同一套。

(2)函式執行資料觀測

生成這個指令Arthes有自己的一套規則,但是自己去拼實在是太麻煩了。下面介紹一個IDEA外掛,如果你的開發工具是idea,那麼可以去外掛市場搜尋Arthes,非常方便。

安裝之後,開啟編輯器,選中方法名,右鍵開啟工具條

這樣就會生成一條監測命令,貼上到剛才的Arthes控制檯即可,呼叫一下該方法,就可以看到出入引數了,非常的便捷好用。

watch指令我使用的最多,多用於除錯功能,用來看入參和出參。

(3)方法內部呼叫路徑,並輸出方法路徑上的每個節點上耗時

使用idea外掛生成方法的trace命令,貼到arthes控制檯,如下:

trace命令可以用來排查錯誤發生在哪一行,或者在最佳化程式碼的時候分析哪些方法耗時多。

(4)方法執行監控

monitor命令一般用於統計方法的平均耗時。

還有很多其他指令我就不當官網文件的搬運工了,感興趣可以去官網看。

四、小結一下

這個元件是免費開源的,真的非常好用,在排查線上BUG的時候,我會先嚐試使用Arthes進行排查,如果實在是排查不出來,再使用遠端除錯。

相關文章