如何让你mac osx的eclipse中debug JDK1.7时显示本地变量

自从买了MAC Air后,对普通的windows电脑越来越看不顺眼了. Mac OSX的强大人性化功能,安全性,配置简单,漂亮的图形界面, 一切都是windows所不能比的. 在Mac的历史上,乔布斯被驱逐出apple公司,新的CEO跟微软签订了一个另Apple后悔终生的协议, ms为mac提供mac版office, 而mac允许ms使用mac的图形界面,从此,ms有了windows.

除了功能上的区别,mac air的另一个重要特性就是硬件配置高,i7双核+8GRAM+SSD. 其最新版SSD比市场上卖的普通硬盘要快4倍. 无论开机,打开xx程序,都是秒间. 等待的时间少了,工作起来顺心多了,效率大大提高.

最后就是mac air的轻薄.拿着真方便,也好装逼.

扯这么多,都快成了mac的销售了.因为确立以后都是使用mac做自己的工作机,于是决定抛弃原来mac上的双系统,将开发环境从虚拟windows上挪到mac osx上.

扯淡完毕,进入正文.

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会被自动关联.

如何让你mac osx的eclipse中debug JDK1.7时显示本地变量

然后将你的项目转为使用jdk1.7. 开始你的debug之旅. 高兴吧? No, 为什么本地变量不显示? 看下图

如何让你mac osx的eclipse中debug JDK1.7时显示本地变量

我在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.

如何让你mac osx的eclipse中debug JDK1.7时显示本地变量

2, 将jdk export as jar. 起名字为rt_debug.jar.

3, 修改jre1.7的定义,将rt_debug.jar添加到jre中,并一定要放在最前面.

如何让你mac osx的eclipse中debug JDK1.7时显示本地变量

4, 点击finish保存.至此,eclipse中的jdk1.7便可以debug了.如下图:

如何让你mac osx的eclipse中debug JDK1.7时显示本地变量


公欲善其工,必先利其器. 

转载于:https://my.oschina.net/xpbug/blog/97648