解決debug到jdk源碼時不能查看變量值的問題


如何跟蹤jdk源碼

看到這個標題大概大家都會在心里想誰還跟蹤個源碼呀,在eclipse中打個斷點,以debug的方式運行,然后F5進入方法,F6跳過方法,F7跳出方法。但是不知道大家有沒有注意到,如果你跟蹤到的是jdk源碼的話,比如HashMapput方法,即使你F5進入到這個方法的內部了,你也看不到你put的 key 和 value 的實際值。但是我們既然要跟蹤源碼,那么肯定要看到我們設置的 key 和 value 是如何歷經九九八十一難才進入到 HashMap 這個之中的。為什么說是桶,大家有興趣的可以自己去深入了解一下HashMap,這里我就不做過多的介紹了。

這是我們跟蹤源碼看到的情況:

這是我們想要看到的情況:

接下來就是今天的正題了


1、 編譯源碼

1.1 、簡單介紹

首先我們要知道一個jar也就是rt.jar, 它是JAVA基礎類庫,也就是你在java doc里面看到的所有的類的class文件,但是 orcale 在編譯jdk源碼的時候為了減小jar包的大小,使用的是 javac -g:none 也就是不帶任何的調試信息。這就是我們跟蹤jdk源碼但是看不到變量值的罪魁禍首,但是上帝在給你關了一扇門的同時也會給你開一扇窗的。那么我現在就來帶你一下這扇窗是怎么打開的。

上面這張圖是jdk安裝目錄,可以看到這個有個src.zip,它就是今天的主角:jdk源碼,你可以把它解壓出來看一下里面的內容,其實就是一個個的java類。

1.2、 開始編譯源碼

  1. 我們需要將它解壓出來,至於放在哪里看你心情,只要你能找得到就可以了,因為我們它是我們今天的重頭戲。解壓出來就是下面這些東西


2. 打開eclipse新建一個java工程,命名也看你心情。


3. 將第一步解壓出來的那6個文件夾全部復制到你工程下的src中(其實不需要全部,有些是可以刪除的,但是為了省事就全部都復制進去好了。)


4. 其中有報錯,但是你不用管,你只需要等到eclipse將這個工程編譯完成后將其導出為jar文件。選中src-->右鍵-->選擇Export


5. 取好你的名字,選擇放到哪里,然后Finish就可以了。至此我們就完成第一步了。

2、 關聯源碼

  1. 在你的eclipse的工具欄選擇window-->preferences,找到Installed JREs, 選擇你使用的jdk點擊Edit進行編輯。

  1. 在編輯窗口點擊 Add External JARs 選擇我們剛剛編譯好導出的那個jar包。

  1. 紅色的jar就是我們自己導出的jar,我們要將我們導出的jar往上移,移到藍色的 rt.jar 上面。然后Finish

  2. 將我們編譯的jar和src.zip進行關聯。選擇JRE System Library 找到里面我們編譯的jar, 右鍵-->Propertites。

  1. Propertites 選擇 External File... 找到我們最開始的src.zip並選擇它。然后Aplly ok。一切結束。

3、 大功告成

現在你就可以愉快的跟蹤源碼,看看你的變量是怎么在java的世界中遨游了。


免責聲明!

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



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