Generally speaking, to be able to watch the variables while stepping through JDK source code, you need the class files to be compiled with debug information i.e. compile using javac -g.
So your best bet is to either find an already compiled version with debug information (I couldn't find anything for JDK 7) or you can try compiling the source for yourself.
According to this post (please note that I haven't tried it) you don't need to compile all sources, only the ones you need. Putting your newly compiled classes in the $jdk/jre/lib/ext/endorsed directory, the new classes would be used instead the ones in the original rt.jar.
I believe that should get you started.
Update: Actually I have just tried this process and it is not hard at all. Tested on Windows, JDK 1.7.0_11. All the commands are invoked from command line:
Create your working folder. I chose d:\ root folder
Inside your working folder create the source folder i.e. jdk7_src and output folder jdk_debug
From your JDK_HOME folder get the src.zip file and unzip it inside jdk7_src
Select what you will compile and delete the rest. For all of them you might need additional steps. I have chosen the folders:
java
javax
org
From your JDK_HOME\jre\lib get the file rt.jar and put in the work folder (this is only for convenience to not specify too large file names in the command line).
Execute the command: dir /B /S /X jdk7_src\*.java > filelist.txt to create a file named filelist.txt with the list of all java files that will be compiled. This will be given as input to javac
Execute javac using the command: javac -J-Xms16m -J-Xmx1024m -sourcepath d:\jdk7_src -cp d:\rt.jar -d d:\jdk_debug -g @filelist.txt >> log.txt 2>&1 This will compile all the files in the jdk_debug folder and will generate a log.txt file in your working folder. Check the log contents. You should get a bunch of warnings but no error.
Go inside the jdk_debug folder and run the command: jar cf0 rt_debug.jar *. This will generate your new runtime library with degug information.
Copy that new jar to the folder JDK_HOME\jre\lib\endorsed. If the endorsed folder does not exist, create it.
Debug your program in Eclipse. Note how the variables are named normally (no more arg0, arg1 etc). Happy debugging :)
thanks very much, and i encounter a problem in item6:dir /B /S /X jdk7_src*.java > filelist.txt what is /B /S /X?–
user2245634Aug 16 '13 at 7:09
/B: no additional file info. /S: read subdirectories too. X: shows the short names of the files instead of long file names. You can see this information if you run dir /?. –
c.s.Aug 16 '13 at 7:15
Worked great! Excellent response! You can also do this for parts of the Java codebase that aren't included in src.zip, like the SunJCE crypto provider. –
voetsjoebaMay 27 at 18:56
This is great info, but for convenience see @weberjn's answer. –
dgtcJul 28 at 14:49
I just compiled the source code of jdk1.7.0-51 in windows7, got 45 errors "error: cannot find symbol." It seems the package (sun.awt.*) is needed, however does not locate by default in the jdk source code. –
rekinyzAug 1 at 13:47
/B
: no additional file info./S
: read subdirectories too.X
: shows the short names of the files instead of long file names. You can see this information if you rundir /?
. – c.s. Aug 16 '13 at 7:15