今天发现一个奇怪的问题,就是在eclipse里面设置的断点无论如何就是不被触发。
现象如下:我启动了好几个服务(不同的jvm进程),有一个服务的代码中设置的断点始终不能被触发,其它几个服务都好好的。通过日志可以确定程序肯定被正确执行,而且设置断点的行也被执行了。检查“Skip All Breakpoints”也没有选中,重启现象依旧。
后来网上搜了一下发现,这原来是jdk的一个bug,我用的是jdk1.6 update 14,正好是有问题的这个版本。
详细说明见:http://www.oracle.com/technetwork/java/javase/6u15-142514.html
解决方案,很简单,就是得使用Parallel Scavenge garbage collector ( -XX:+UseParallelGC) or the Parallel Compacting garbage collector (-XX:+UseParallelOldGC)这两种垃圾收集器的其中一种。加上-XX:+UseParallelGC选项,果然问题解决。或者升级jdk版本。stackoverflow上有对这个问题的详细说明。
http://stackoverflow.com/questions/1370868/eclipse-debugger-doesnt-stop-at-breakpoint

本文探讨了在使用Eclipse进行Java开发时遇到断点不触发的问题,发现原因在于使用了存在bug的JDK版本(1.6update14)。文中提供了解决方案,即通过使用ParallelScavenge或ParallelCompacting垃圾收集器,或升级到更新的JDK版本来解决此问题。
1159

被折叠的 条评论
为什么被折叠?



