如何在Eclipse中Debug調試JDK代碼


背景

有的時候你想debug調試Java的源代碼,就想試圖在Java源代碼中設置斷點,在Eclipse中常常會出現 Unable to insert breakpoint Absent Line Number Information錯誤。導致這個錯誤的原因是Eclipse默認使用了JRE環境,而事實上只有JDK環境才包含有Debug信息。接下來我們介紹如何為你的項目設置JDK環境,從而讓你可以調試Java源代碼。
 
解決辦法
1. 在Eclipse中,Window->Preferences->Java->Compiler,確保以下選項都勾選上:


2. 在Eclipse中,Window->Preferences->Java->Installed JREs,選擇Add,在JRE Home中選擇 JDK路徑(因為只有JDK支持源碼調試),並且給它合適的命名。退出保存后,選擇JDK路徑。



3. 右鍵你的工程項目,Properties,Java Build Path->Libraries,找到JRE System Library,選擇Edit。使用Alternate JRE中你創建的JDK。


4. 應該就大功告成了 。
 
如何debug斷點可以查看jdk源碼的變量?
  這時候雖然可以debug打斷點可以進入源碼,但是這時候源碼的變量值是沒法看到的,為什么呢?因為在JDK中,sun對rt.jar中的類編譯時,去除了調試信息。那么是否有解決辦法呢?答案是肯定的。

解決方案
1.在你的D:盤新建jdk文件夾,然后在文件夾里面分別創建兩個文件夾jdk_src(存放源碼)和jdk_debug(存放編譯結果文件)。

2.從%JAVA_HOME%路徑下找到src.zip源碼源碼壓縮包,解壓至D:/jdk/jdk_src目錄中,並只保留java,javax,org三個文件夾。

3.從%JAVA_HOME%\jre\lib找到rt.jar,將它拷貝到D:/jdk文件夾。

4.打開DOS命令窗口,用命令cd命令進入D:/jdk文件夾,然后執行命令  dir /B /S /X .\jdk_src\*.java > .\filelist.txt     完成后會在D:/jdk目錄生成filelist.txt文件,里面為待編譯的文件路徑*/*.java。

5.執行命令   javac -J-Xms16m -J-Xmx1024m -sourcepath .\jdk_src -cp .\rt.jar -d .\jdk_debug -g @.\filelist.txt >> .\log.txt 2>&1   會編譯filelist.txt文件中列出的*.java源文件,編譯的*.class文件會放入D:/jdk/jdk_debug文件夾,同時編譯過程中會在D:/jdk生成log.txt文件。

6.執行cd命令切換到D:/jdk/jdk_debug,然后執行  jar cf0 rt_debug.jar *     將*.class文件打成jar,打包完成后會在D:/jdk/jdk_debug目錄中生成rt_debug.jar。

7.把這個生成的rt_debug.jar包復制到%JDK_HOME%\jre\lib\endorsed下。如果沒有endorsed目錄,自己創建一下。

8.在eclipse里面找到Window->Installed JRES,選擇jdk,點擊Edit,然后點擊Add External jars,選擇剛才創建的rt_debug.jar導入,然后把rt_debug.jar移動到rt.jar的前面,最后選中rt_debug.jar,點擊Source Attachment選擇%JAVA_HOME%/jdk/src.zip添加源文件,並把rt.jar的源文件刪除(不用刪除,本人測試不刪除可以成功),最最后,重啟eclipse。

 

其實這里把rt.jar的源文件可以保留,不用刪除,本人保留rt.jar的源文件測試后沒問題

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM