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)。
然后就可以了。