eclipse debug原始碼檢視變數值!!!
之前一段時間苦於研究各種原始碼,但是debug的時候不能檢視原始碼值...各種下載原始碼到本地,重現原始碼值。。。
!!!那是因為為了儘量節省JAR包的大小,Oracle在編譯JDK原始碼時,去除了對變數值的顯示。其實是可以通過其他手段解決的.
1 找一個空的資料夾作為工作空間根目錄,如E:\jdk,在裡面新建兩個資料夾“jdk_src”和“jdk_debug”;其中“jdk_src”用來存放待編譯的.java原始碼檔案,“jdk_debug”用來存放編譯後的.class位元組碼檔案;
2 到%JAVA_HOME%\jre\lib找到rt.jar,將它拷貝到工作空間根目錄 E:\jdk;
3 開啟JDK原始碼檔案壓縮包%JAVA_HOME%\src.zip,把java、javax、org這三個資料夾,直接拖拽解壓到用來存放待編譯的.java原始碼檔案的E:\jdk\jdk_src資料夾;
4 執行CMD,執行如下指令:
4.1 切換目錄到工作空間 CD E:\jdk ;列出E:\jdk\jdk_src裡所有待編譯的.java原始碼檔案到filelist.txt: dir /B /S /X .\jdk_src\*.java > .\filelist.txt ;完成後將會在E:\jdk生成一個filelist.txt,裡面列出了很多行**.java;
4.2 將jdk_src裡所有待編譯的.java原始碼檔案,編譯成.class位元組碼檔案,放到jdk_debug這個用來存放編譯後的.class位元組碼檔案的資料夾裡: javac -J-Xms16m -J-Xmx1024m -sourcepath .\jdk_src -cp .\rt.jar -d .\jdk_debug -g @.\filelist.txt >> .\log.txt 2>&1 ;編譯過程中將會在E:\jdk\生成編譯日誌檔案log.txt,編譯完成後可以在E:\jdk\jdk_debug看到生成了相應的資料夾和.class位元組碼檔案;
提醒:開啟編譯日誌檔案E:\jdk\log.txt,如果除了警告之外還有錯誤的話,那麼很可能是JDK版本不一致。請確保你的JDK原始碼壓縮包src.zip和環境變數裡的%JAVA_HOME%保持一致!!!
4.3 切換目錄 CD E:\jdk\jdk_debug ,將.class位元組碼檔案打成JAR包: jar cf0 .\rt_debug.jar .\* ;打包完成後將會在E:\jdk\jdk_debug生成rt_debug.jar。
有了這個可以除錯時顯示變數值的rt_debug.jar,接下來你只需要在Eclipse把這個JAR包加到你設定好的JRE:
開啟Eclipse的選單欄Windows->Preferences:點開Java->Installed JREs,選擇你設定好的JRE點選Editd,在JRE system libraries點選右邊Add External JARs,把rt_debug.jar新增進去,並點選Up把rt_debug.jar上移到rt.jar之上。
完成!!!
感謝前人的分享附上原作者連結:https://blog.csdn.net/itarget/article/details/72785956