1. 程式人生 > >有意思的arthas 之 jad反編譯

有意思的arthas 之 jad反編譯

jad

反編譯指定已載入類的原始碼

jad 命令將 JVM 中實際執行的 class 的 byte code 反編譯成 java 程式碼,便於你理解業務邏輯;

  • 在 Arthas Console 上,反編譯出來的原始碼是帶語法高亮的,閱讀更方便
  • 當然,反編譯出來的 java 程式碼可能會存在語法錯誤,但不影響你進行閱讀理解

引數說明

引數名稱 引數說明
class-pattern 類名錶達式匹配
[c:] 類所屬 ClassLoader 的 hashcode
[E] 開啟正則表示式匹配,預設為萬用字元匹配

使用參考

當有多個 ClassLoader 都載入了這個類時,jad

命令會輸出對應 ClassLoader 例項的 hashcode,然後你只需要重新執行 jad 命令,並使用引數 -c <hashcode> 就可以反編譯指定 ClassLoader 載入的那個類了;

$ jad org.apache.log4j.Logger

場景

在線上,經常會有記得程式碼明明改好了、這個程式碼邏輯是怎樣的,那麼往往需要從線上把對應的class拉下,然後放到jdgui裡面去反編譯檢視,但是有了這個工具之後,我們直接在線上就可以看程式碼,簡直是方便死了。