Jdk源碼調試

在調試過程中我們往往會進入到jdk的源碼當中去,此時顯示的往往是一個class文件,其實jdk自身是帶有源碼包的,按照以下步驟操作即可:
在eclipse的Windows-Preferences-Java-Installed JRE下,選擇安裝的jdk,點edit,然後在列出的jre system libraries列表中選擇rt.jar,設置其中的Source attachment爲C:\java\jdk1.6.0_10\src.zip(你的jdk安裝目錄)。

此時我們再做調試,就會發現關聯到源碼了,如下圖所示:

文件:Debug.jpg


以上顯示的是進入java.util.HashSet的add方法當中的調試情況,但問題又來了,注意到下方的Variable變量顯示欄,裏面只有三個變量this,arg0,arg1。arg*對應到方法參數的值,但對於局部變量int hash和int i,我們無法看到它的值,這種情況往往給我們的調試帶來不便。
爲什麼會出現這種情況呢?感興趣的可以參考這個貼子:http://hllvm.group.iteye.com/group/topic/25798。
問題怎麼解決呢?我們需要一個debug版本的jdk,有兩種途徑:自己編譯debug版本的jdk,或直接從網上下載。
基於jdk源碼編譯生成jdk的過程十分複雜,有興趣的可以去了解,如果嫌繁瑣的話,可以直接去官方下載debug版本的jdk,http://download.java.net/jdk6/6u25/promoted/b03/index.html。
此時我們將jdk替換爲fastdebug,重新調試,如下圖所示:


Fastdebug-debug.jpg

此時我們在variable一欄可以清楚地看到局部變量名了。

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