Arthas學(xué)習(xí)三(class/classloader相關(guān)命令)

sc(Search Class)

這個命令能搜索出所有已經(jīng)加載到JVM中的Class信息。
sc默認開啟了子類匹配功能,所有當前類的子類也會被搜索出來,想要精確的匹配,將options disable-sub-class true開啟

參數(shù)說明
class-pattern: 類名表達式匹配,支持全限定名,如com.taobao.test.AAA, 也支持com/taobao/test/AAA這樣的格式。
method-pattern: 方法名表達式匹配
-d: 輸出類的詳細信息
-E: 開啟正則表達式匹配
-f:輸出當前類的成員變量信息,需要配合-d一起使用

例:
輸出MathGame類的詳細信息,成員變量信息也一并輸出
sc MathGame -d -f

sm(Search Method)

查看已加載類的方法信息,只能看到當前類所聲明的方法,無法看到父類的。

參數(shù)說明:
class-pattern: 類名匹配表達式
method-pattern: 方法名匹配表達式
-d: 展示每個方法的詳細信息
-E: 開啟正則表達式匹配,默認為通配符匹配

例:
sm -d java.lang.String

jad

jad命令將JVM中運行的字節(jié)碼反編譯成java代碼。

參數(shù)說明:
class-pattern: 類名表達式匹配
-E: 開啟正則表達式匹配,默認為通配符匹配
--source-only:  只顯示源碼,可以結(jié)合mc/redefine命令一起使用

例:
反編譯String類下的trim()方法
jad java.lang.String trim

mc

把源代碼編譯成字節(jié)碼

將/root/HelloWorld.java編譯HelloWorld.class,并保存到內(nèi)存中
mc /root/HelloWorld.java

可以通過-d命令指定輸出目錄
mc -d /root/bbb /root/HelloWorld.java

redefine

把新生成的字節(jié)碼文件在內(nèi)存中執(zhí)行

可以通過jad+mc+redefine命令,直接修改源代碼并執(zhí)行
1.使用jad反編譯MathGame,輸出到/root/MathGame.java中
jad --source-only demo.MathGame > /root/MathGame.java
2.對源代碼進行修改,然后使用mc將修改后的代碼編譯到/root/MathGame.class
mc /root/MathGame.java -d /root
3.使用redefine命令重新加載新的字節(jié)碼
redefine /root/demo/MathGame.class

dump

將已加載類的字節(jié)碼文件保存到特定目錄,默認保存路徑:logs/arthas/classdump

選項說明:
-E: 開啟正則表達式匹配

把String類的字節(jié)碼文件保存到~/logs/arthas/classdump目錄下
dump java.lang.String
把demo包下所有類的字節(jié)碼文件保存到~/logs/arthas/classdump/目錄下
dump demo.*

classloader

獲取類加載器的信息

  • 1.顯示所有類加載器的信息
  • 2.獲取某個類加載器所在的jar包
  • 3.獲取某個資源在哪個jar包
  • 4.加載某個類
基本用法:
classloader 

參數(shù)說明:
-l: 按類加載實例進行統(tǒng)計
-t: 打印所有ClassLoader的繼承樹
-a: 列出所有ClassLoader加載的類,謹慎使用
-c: 先通過classloader -l獲取類加載器的hashcode,然后再使用classloader -c hashcode,找到類加載器所在的jar包
-r: 獲取資源在哪個jar包,例如 calssloader -r java/lang/String.class
-load: 使用類加載器加載指定的類到方法區(qū)中,例如,classloader -load java.lang.String
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容