mac os的eclipse中debug JDK1.7时显示本地变量的问题
MAC osx 10.8自带apple提供的jdk1.6, 但是不带src和doc. 这对于一个经常debug jdk的人来说,很麻烦. 怎么办?
1, 去oracle官网上下载最新的jdk1.7 for mac osx: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
2, 直接安装jdk1.7. Oracle jdk1.7中包含src和doc.
3, 安装完毕,这时候,mac osx中的默认java变成了oracle的1.7版本. 这并不是我想要的,我只是想拿1.7作为eclipse项目的build JVM, 但不想让1.7成为mac系统的jvm. 下面恢复mac jvm.
4, 先到目录/Library/Java/JavaVirtualMachines,将其中的jdk1.7剪贴到eclipse的workspace下. JavaVirtualMachines下面没有了jdk1.7,就会自动转回使用/System/Library/Java/JavaVirtualMachines下面的系统自带jvm.
5, 还没完,jdk1.7的安装同时更改了applet和webstart的jre, 我还需要将这些jre也转回来. 跟着apple的支持文档走: http://support.apple.com/kb/HT5559
现在mac osx跟原来一样了,任何配置都没有被改变. 唯一不同的是,我们多出来一份绿色版的oracle jdk 1.7. 它放在eclipse的workspace下面以供使用. 接下来就是打开eclispe,在preferences中的installed JRE加入jdk 1.7. 其src.zip会被自动关联.
然后将你的项目转为使用jdk1.7. 开始你的debug之旅. 高兴吧? No, 为什么本地变量不显示? 看下图
我在debug类ResourceBunble,本地变量里面却不显示变量,甚至连parameter都变成了arg0. 原因在于oracle提供的jre中rt.jar不带debug信息.orcale在编译src的时候,使用了 javac -g:none 意思是没有debug info, 这样可以减小rt.jar的大小. 若想正常调试jdk, 就只能重新编译src. 这里提供一个简单的src编译方法.
1, 在eclipse中新建一个项目"jdk", 然后导入jdk1.7中的src.
2, 将jdk export as jar. 起名字为rt_debug.jar.
3, 修改jre1.7的定义,将rt_debug.jar添加到jre中,并一定要放在最前面.
4, 点击finish保存.至此,eclipse中的jdk1.7便可以debug了.如下图: