淺談1——用Eclipse除錯JAVA程式

月月鳥發表於2020-10-25

本篇部落格主要介紹如何用Eclipse除錯簡單的JAVA程式。

1、如下圖,一個簡單的JAVA程式

 

 

 2、設定斷點。 方法:選中需設定斷點的行程式碼,按快捷鍵Ctrl+Shift+B,設定斷點;

斷點設定成功該行會變成綠色。如上圖。

 

3、進入除錯頁面。點選爬蟲圖示進入除錯頁面。

 

4、下圖左側圖示為Step Into, 中間圖示為Step Over,右側的為Step  Return;

  • Step Into:單步執行,遇到子函式就進入並且繼續單步執行。
  • Step Over:在單步執行時,在函式內遇到子函式時不會進入子函式內單步執行,而是將子函式整個執行完再停止,也就是把子函式整個作為一步。
  • Step Return:返回上一步執行過程。

(注:對除錯操作理解尚淺,如有錯誤,歡迎指出。)

5、接下來用Step Into(單步執行)進行除錯。下圖為各變數及其值。(除錯過程中值會變化)

this.x, this.y, this.z 為當前物件的屬性x,y,z;初值均為0;

灰色的x,y,z表示形參,傳遞的引數分別為2,3,5;

 

6、點選Step Into,綠色游標移到第12行,即程式在執行第12行。

分析除錯是否正確:首先程式從19行開始執行,建立了一個AddClass類的物件class1;

呼叫的建構函式引數為三個,故進入下圖所示建構函式。

 

 7、繼續進行單步執行,游標從第12行進入第8行。此時this.x, this.y, this.z的值依然為0。

 

 8、繼續進行Step Into,游標進入第4行;注意,此時程式不進入下圖的建構函式,而是轉向第3行載入屬性。

 

 9、載入完屬性後,程式進入第5行。

 

 

 10、第5行執行完畢後,綠色游標轉入第9行;

注意:此時,this.x=2,  this.y和this.z依然為0。

 

 

 

 11、第9行執行完畢後,此時this.y也被賦值為3;

 

 

12、之後程式進入13行,對this.z進行賦值。this.z的值為5。

 

 

 13、到這裡就完成了對class1物件的初始化;class2,class3物件的初始化過程與class1一樣,這裡不再重複。

 上述例項的JAVA原始碼:

 

public class AddClass {
    public int x=0, y=0, z=0;
    public AddClass(int x) {
        this.x=x;
    }
    public AddClass(int x, int y){
        this(x);
        this.y=y;
    }
    public AddClass(int x, int y, int z){
        this(x,y);
        this.z=z;    
    }
    public int add() {
        return x+y+z;
    }
    public static void main(String[] args) {
        AddClass class1=new AddClass(2, 3, 5);
        AddClass class2=new AddClass(10, 20);
        AddClass class3=new AddClass(1);
        System.out.println("x+y+z="+class1.add());
        System.out.println("x+y="+class2.add());
        System.out.println("x="+class3.add());
        
        
    }
}

 

 

 

以上只是介紹物件初始化過程中程式具體的執行情況,並沒有介紹add方法的呼叫過程。本篇部落格主要目的是讓小白(本人)學會簡單除錯,故add方法的

具體呼叫並沒有給出。 

如果文章中有錯誤的地方,歡迎留言。

 

 

 

 

 

 

 

相關文章