您的位置:首页 > 编程语言 > Java开发

debug jdk source can't watch variable what it is

2015-12-07 16:24 417 查看
源地址:http://stackoverflow.com/questions/18255474/debug-jdk-source-cant-watch-variable-what-it-is

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 :)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: