1.环境:windows7 + eclipse3.6 + JDK1.6.0_22
2.问题:在某个工程内设置断点之后,调试时断点无效----也就是程序会直接运行到最后。
eclipse的工作空间内有好几个工程,但只有在某个工程断点无效,在其他工程内断点是有效的。
为了测试,我特意新建了一个debugtest.java文件。代码如下:
1
2
3
4
5
6
|
public
class
DebugTest {
public
static
void
main(String[] args) {
System.out.println(
"a"
);
System.out.println(
"b"
);
}
}
|
截图如下:
我在两个system.out.println那里设置了两个断点,然后将这个文件分别放到同一个工作空间的不同工程里,其中一个工程可以在断点处自动停下来,另一个就直接运行到结尾了。
3.采取过的措施:
1.将工程(都是maven工程)删掉,再重新import。无效。
2.选择Skip All Breakpoints,无效(网上流传最广的方法)。
3.选择Remove All Breakpoints,再重新设置断点,还是无效。
解决方案:
这个问题找到原因了:是工程编译的时候没有设置line number,导致调试的时候无法定位,关键是:这个line number设置是针对某个工程的,而不是整个平台的环境变量 ,所以才会出现有的工程行,有的工程不行的情况。坑爹的是,这个问题居然没有任何提示,也不知道什么时候勾掉的。
废话不多说了,解决方法如下:
选定工程,点击右键-->Properties-->Java Compiler-->Classfile Generation,勾选上Add line number attributes to generated class files(used by the debugger)。
然后就可以了。