一堆人都說,擅用 IDE,逐步執行,追蹤結果,我也常和 Visual C++ 使用者這麼說。

有時問別人「會不會 Trace」,得到的答案是「會 Trace」,事實似乎並非如此,

這裡做簡單簡介,一些細節差異,日後於他文補充。


1 . 設斷點

 

#include <stdio.h>
int main()
{
    int i=0, sum=0;
    for(i=0; i<=10; ++i)
        sum+=i;
    return 0;
}

 

假設要觀查的是 for 回圈裡的變數變化,在編輯器中,將滑鼠游標移到 for 最前面,按一下會出現一個紅點

DebugBreak (1).png  

再按一下就可取消。也可以將文字的游標停在該行,按下 F9 切換斷點。


2. 開始偵錯

按下偵錯 -> 開始偵錯 (F5)

DebugBreak (2).png  

也可直接按快捷鍵 F5 即可,輯編器應該會跑成這樣

DebugBreak (3).png  

上面多了一個 黃色鍵頭,那是斷點所在之處,也代表程式目前「正要執行這行」(也就是程式還沒跑這行)


3. 呼叫監看視窗

按下「偵錯」-> 自動變數

DebugBreak (4).png  

完成後出現以下視窗 (經位置調整)

DebugBreak (5).png  

裡面列的都是自動變數 (含 global variable,及在該函式 main 裡的可視變數),這裡看到,i 及 sum 都是莫名奇妙的數字,

因黃色鍵頭現在停在第四行,第四行還沒開始執行,所以沒賦予初值。


4.  開始逐步執行

按下「偵錯」-> 「不進入函式」,快捷鍵為 F10

DebugBreak (6).png  

現在, 編輯器那裡長這樣

DebugBreak (7).png  

上一行已執行完一次,黃色鍵頭已往下跳一行,故 i 值與 sum 值於第四行已執行完畢,初值設完。

再按一下 F10,變成這樣

DebugBreak (8).png  

變化的部份,會以紅色標記,裡面 i 值變 1,至於 sum 還沒執行到 ,

(黃色鍵頭指向的是 "正要執行",所以還沒執行 sum+=i ),故 sum 值還是 0。

再多按幾次 F10 慢慢觀查,最後一張圖應該長這樣

DebugBreak (9).png  


注意,有必要時,斷點可以多設幾個沒關係。

設斷點的意義在於,若每按下一次 F5 (偵錯執行) 時,程式會在斷點的地方停下來。

其它細節部份,於他篇文章再說明。

 

 

arrow
arrow
    全站熱搜

    edisonx 發表在 痞客邦 留言(3) 人氣()