一堆人都說,擅用 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 (偵錯執行) 時,程式會在斷點的地方停下來。

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

 

 

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


留言列表 (3)

發表留言
  • damody
  • 八掛一下,淚推"事實似乎並非如此"~~~
  • 果真淚推 ~

    edisonx 於 2012/05/12 18:41 回覆

  • lin
  • 想請問一下
    我使用VS2010,我記得以前可以直接按F5會自動編譯+執行
    可是我現在案F5都只有直接執行
    即使程式碼有改過 還是沒有自動編譯
    變成要自己按F7 先編譯才可以
    是我更動到什麼設定了嗎

    謝謝
  • lin
  • 我記得原本F5可以編譯+執行好像也是在VS2010做到的
    因為我用VS2010一陣子了,印象中之前可以
    更改了theme設定之後就不能了(套用網路上抓的)
  • 我沒遇過這情形,不知道 vs 有沒有可以設定熱鍵的地方,
    或試著將 theme 解除 (如果可以的話) 試試,
    可以的話麻煩也請告知是哪份 theme ( 悄悄話亦可),
    我會記得它有這種副作用的。

    F5 是偵錯,真正的編譯+執行應是 Ctrl + F5。

    edisonx 於 2012/06/06 01:47 回覆

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼