解決Debug JDK source 無法檢視區域性變數的問題方案
一.問題闡述
首先我們要明白JDK source為什麼在debug的時候無法觀察區域性變數,因為在jdk中,sun對rt.jar中的類編譯時,去除了除錯資訊,這樣在eclipse中就不能看到區域性變數的值。這樣的話,如果在debug的時候檢視區域性變數,就必須自己編譯相應的原始碼使之擁有除錯資訊。
要達到這個目的,一是找網上人家已經編譯好的版本,剩下的只能自己去編譯。下面我們對於自己編譯提供一個方法,希望對大家有所幫助,如果有什麼問題,請留言。
二.解決方案
1.選擇或建立你的工作目錄,比如我選擇:E:\
2.在你的工作目錄中,建立資料夾jdk_src,用於存放原始碼;建立資料夾jdk_debug,用於輸出編譯結果。
3.從你的機器裝jdk的地方找到src.zip,在你得JDK_HOME可以找到,比如我的在C:\Program Files\Java\jdk1.7.0_09目錄下。然後把src解壓到jdk_src目錄下。
4.解壓完後,選擇你需要編譯的內容,刪除剩下的。一般選擇如下的幾個資料夾就可以了:java javax org 這三個目錄就可以了啊
5.從你得JDK_HOMME\jre\lib中複製到你的工作目錄中,這樣做的目的可以讓你減少在命令列中輸入的檔名。
6.執行如下這條命令:
dir /B /S /X jdk_src *.java > filelist.txt
建立一個叫做filelist.txt的檔案,這個檔案存放了所有你將要編譯的類的名稱。
7.執行如下的命令:
javac -J-Xms16m -J-Xmx1024m -sourcepath E:\jdk_src -cp E:\rt.jar -d E:\jdk_debug -g @filelist.txt >> log.txt 2>&1
這條命令將要編譯所有你指定的檔案,並把編譯結果輸出到jdk_debug目錄中,同時產生log.txt日記檔案。編譯完之後到E:\jdk_debug目錄中檢視,看是否有檔案,如果沒有,可以檢視log.txt進行問題的排查。
8.進入到jdk_debug目錄中,輸入如下命令
jar cf0 rt_debug.jar *
這個命令可以生成我們需要的rt.jar帶編譯資訊的jar包。
9.把這個生成的rt_debug.jar包複製到JDK_HOME\jre\lib\endorsed。如果沒有endorsed目錄,自己建立一下。
參考:debug jdk source can't watch variable what it is