有意思的arthas 之 jad反編譯
阿新 • • 發佈:2018-12-19
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裡面去反編譯檢視,但是有了這個工具之後,我們直接在線上就可以看程式碼,簡直是方便死了。