解決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日記文件。這個日記文件記錄着編譯警告,但是沒有錯誤。
  8. 進入到jdk_debug目錄中,輸入如下命令:
    jar cf0 rt_debug.jar *

    這個命令可以生成我們需要的rt.jar帶編譯信息的jar包。
  9. 把這個生成的rt_debug.jar包複製到JDK_HOME\jre\lib\endorsed。如果沒有endorsed目錄,自己創建一下。
  10. 如果你是在eclipse中debug的。點擊Window->Installed JRES,選擇相應的JDK,點擊Edit,r然後選擇點擊Add External jars,選擇我們步驟9中目中的rt_debug.jar,就可以了。現在完成了所有的步驟了,趕快嘗試debug一下,如果可以查看局部變量了,那麼恭喜你成功了。

三.參考文獻

1.debug jdk source can't watch variable what it is  

    http://stackoverflow.com/questions/18255474/debug-jdk-source-cant-watch-variable-what-it-is

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章