前幾天本來想以debug模式看一下JDK的源碼,進入調試模式時才發現,根本看不到方法裡面變數值的情況。為什麼呢? JDK現在的版本中,編譯過後,去除了裡面的偵錯資訊。解決辦法是,編譯那些類,使其帶有調試信息,使用命令:javac -g
#查看了一些相關資料,現將解決方法放到下面
在d:\的根目錄下建立jdk7_src和jdk_debug目錄。
在JDK_HOME目錄下找到src.zip文件,並把它裡面的文件解壓縮到jdk7_src目錄下,然後在解壓縮後的目錄中刪除除了java、javax、org以外的其他目錄。
把JDK_HOME\jre\lib下的rt.jar放到你的工作目錄下,也就是d:\的根目錄下(這樣僅僅便於在命令列中不用指定大量的檔案名稱)。
執行指令dir /B /S /X jdk7_src\*.java > filelist.txt 去建立需要編譯的java檔案列表,用於javac指令編譯的輸入原始文件,dir命令相關參數說明,/B: 不輸出額外的文件資訊(沒有標題資訊或摘要),/S: 顯示指定目錄和所有子目錄中的文件,/X: 顯示為非8.3 檔案名稱產生的短名稱。格式是 /N 的格式, 短名稱插在長名前面。如果沒有短名稱,在其位置則顯示空白。
執行javac -J-Xms16m -J-Xmx1024m -sourcepath d:\jdk7_src -cp d:\rt.jar -d d:\jdk_debug -g @filelist.txt >> log.txt 2>&1 編譯後的檔案將放入jdk_debug資料夾,編譯產生的日誌將會儲存到log.txt檔案中。在日誌檔案中將看到大量的警告,但是沒有錯誤訊息。
進入jdk_debug目錄執行指令jar cf0 rt_debug.jar *,將編譯後的檔案打包成rt_debug.jar包。
把新產生的jar套件放到JDK_HOME\jre\lib\endorsed中(如果沒有endorsed資料夾,則手動建立)。
說明:JDK_HOME表示JDK的安裝路徑,本文所有的指令都在d:\下及其子目錄下執行的。
簡單點,也可以將我下面提供的JDK7的偵錯版本的rt_debug.jar放入endorsed資料夾中。
debug jdk source can't watch variable what it is --stackoverflow
#Java Endorsed Standards Override Mechanism --java guides
rt_debug.jar下載
############ ###
以上是調試JDK源碼時,不能查看變數值怎麼解決?的詳細內容。更多資訊請關注PHP中文網其他相關文章!