我們有一個在Weblogic應用服務器11上運行的Java 6的應用程序。我試圖調試一個問題。我的代碼是調試器行爲在if,else if,else
if(a==0){
//Do A
}
else if(a==1){
// Do B
}
else{
// do C
}
我的問題是,即使我如果塊是真實的,第2行執行仍然調試器會去其他中塊行8。 我的機器和服務器上的代碼是同步的,所以沒有不匹配。 請幫我找出可能是我的代碼有問題。
我們有一個在Weblogic應用服務器11上運行的Java 6的應用程序。我試圖調試一個問題。我的代碼是調試器行爲在if,else if,else
if(a==0){
//Do A
}
else if(a==1){
// Do B
}
else{
// do C
}
我的問題是,即使我如果塊是真實的,第2行執行仍然調試器會去其他中塊行8。 我的機器和服務器上的代碼是同步的,所以沒有不匹配。 請幫我找出可能是我的代碼有問題。
我們需要知道什麼是// Do C
。
如果有分配:
if (a == 0) {
b = 1;
} else if (a == 1) {
b = 0;
}
else {
b = null;
}
一個典型的優化,一些編譯器做的是:
b = null;
if (a == 0) {
b = 1;
} else if (a == 1) {
b = 0;
}
這就是執行的字節碼。更不用說,如果代碼被JIT
編譯器編譯爲本地代碼。 因此,根據您的調試客戶端和jdk,您可以看到瘋狂的當前指令行。但只要區塊末端的狀態是預期的,就可以。
有時執行需要關閉語句。所以它結束了。
確保沒有將static
值分配給a
,如果是,則重新編譯。靜態分配在編譯時被鏈接。
它不應該是:
if(a==0)
...
else if(a==1)
...
else
...
使用'int'賦值作爲條件時,你不會得到編譯器錯誤嗎? – 2012-02-10 08:38:25
這個新代碼也很好。請使用複製粘貼。 – 2012-02-10 09:11:08