jad
反編譯指定已加載類的源碼
mc
Memory Compiler/內存編譯器,編譯.java文件生成.class。
redefine
加載外部的.class文件,redefine jvm已加載的類。
上面三個命令組合運用,某個功能有問題找到對應類反編譯查看,寫測試類(或直接加日誌),編譯成class文件,運行調試
dump
dump 已加載類的 bytecode 到特定目錄
輸出指定類的堆棧信息
watch
方法執行數據觀測
讓你能方便的觀察到指定方法的調用情況。能觀察到的範圍爲:返回值、拋出異常、入參,通過編寫 OGNL 表達式進行對應變量的查看。
tt
方法執行數據的時空隧道,記錄下指定方法每次調用的入參和返回信息,並能對這些不同的時間下調用進行觀測
watch 雖然很方便和靈活,但需要提前想清楚觀察表達式的拼寫,這對排查問題而言要求太高,因爲很多時候我們並不清楚問題出自於何方,只能靠蛛絲馬跡進行猜測。
這個時候如果能記錄下當時方法調用的所有入參和返回值、拋出的異常會對整個問題的思考與判斷非常有幫助。
trace
方法內部調用路徑,並輸出方法路徑上的每個節點上耗時
stack
輸出當前方法被調用的調用路徑
很多時候我們都知道一個方法被執行,但這個方法被執行的路徑非常多,或者你根本就不知道這個方法是從那裏被執行了,此時你需要的是 stack 命令。