缘起
研究JDK源码的同学应该知道,在debug的时候是无法看源码中局部变量的值的,且方法变量也会显示成arg1,arg2这种形式而不是真正的变量名。
原因
为什么呢?因为在JDK中,sun对rt.jar中的类编译时,去除了调试信息。那么是否有解决办法呢?答案是肯定的。
解决方案
- 在你的D:盘新建jdk文件夹,然后在文件夹里面分别创建两个文件夹jdk_src(存放源码)和jdk_debug(存放编译结果文件)。
- 从%JAVA_HOME%(此处%JAVA_HOME%就是你的jdk的安装路径,默认的应该是C:\Program Files\Java\jdk1.8.0_152)路径下找到src.zip源码源码压缩包,解压至D:/jdk/jdk_src目录中,并只保留java,javax,org三个文件夹。
- 从%JAVA_HOME%\jre\lib找到rt.jar,将它拷贝到D:/jdk文件夹。
- 打开DOS命令窗口,用命令cd命令进入D:/jdk文件夹,然后执行命令dir /B /S /X .\jdk_src*.java > .\filelist.txt,完成后会在D:/jdk目录生成filelist.txt文件,里面为待编译的文件路径*/*.java。
- 执行命令javac -J-Xms16m -J-Xmx1024m -sourcepath .\jdk_src -cp .\rt.jar -d .\jdk_debug -g @.\filelist.txt >> .\log.txt 2>