共用方式為


快速入門:使用 Visual Studio 調試程式對C++進行偵錯

Visual Studio 調試程式提供許多功能強大的功能,可協助您對應用程式進行偵錯。 本主題提供快速掌握基本功能的方式。

建立新專案

  1. 開啟 Visual Studio 並建立專案。

    如果 [開始] 視窗尚未開啟,請選取 [ 檔案 > 開始視窗]。 在 [開始] 視窗中,選取 [建立新的專案。 在搜尋方塊中,輸入 「Empty project」,然後選取 [空白 專案 ] 範本C++。

    如果您沒有看到項目範本,請開啟 Visual Studio 安裝程式。 選擇具有 C++工作負載的桌面開發,然後選擇 [修改]。

    Visual Studio 會建立專案。

    建立名為 的新原始程序檔 MyDbgApp.cpp

  2. 在 MyDbgApp.cpp 中,取代下列程序代碼

    int main()
    {
        return 0;
    }
    

    使用此程式代碼(請勿移除 #include "stdafx.h"):

    #include <list>
    #include <iostream>
    
    using namespace std;
    
    void doWork()
    {
        list <int> c1;
    
        c1.push_back(10);
        c1.push_back(20);
    
        const list <int> c2 = c1;
        const int &i = c2.front();
        const int &j = c2.front();
        cout << "The first element is " << i << endl;
        cout << "The second element is " << j << endl;
    
    }
    
    int main()
    {
        doWork();
    }
    

設定中斷點

斷點是一個標記,指出Visual Studio應該暫停執行中的程式代碼的位置,以便查看變數的值、記憶體的行為,或是程式代碼的分支是否正在執行。 這是偵錯中最基本的功能。

  1. 若要設定斷點,請按一下函式呼叫語句左側的邊界(或選取程式代碼行,然後按 doWork)。

    設定斷點

  2. 現在按 F5 (或選擇 [ 偵錯 > 開始偵錯] 。

    觸發斷點

    偵錯工具會在您設定的斷點處暫停。 調試程式和應用程式執行暫停的語句會以黃色箭號表示。 函式呼叫 doWork 的行尚未執行。

    小提示

    如果您在迴圈或遞迴中有斷點,或者有許多您經常反覆執行的斷點,請使用 條件斷點 以確保只有在符合特定條件時,才會暫停您的程式碼。 條件式斷點可節省時間,也可讓您更輕鬆地偵錯難以重現的問題。

    嘗試對C++中的記憶體相關失敗進行偵錯時,您也可以使用斷點來檢查位址值(尋找 NULL)和參考計數。

有不同的命令可指示偵錯工具繼續。 我們會顯示從 Visual Studio 2017 開始提供的實用程式代碼導覽命令。

在斷點暫停時,將滑鼠停留在語句 c1.push_back(20) 上,直到綠色的 執行至游標 按鈕 執行至游標 出現,然後按下 執行至游標 按鈕。

執行點擊

應用程式會繼續執行、呼叫 doWork,並在您按下按鈕的程式代碼行上暫停。

用來逐步執行程式碼的常用鍵盤命令包括 F10F11。 如需更深入的指示,請參閱 第一次查看調試程式

檢查數據提示中的變數

  1. 在目前的程式代碼行中(以黃色執行指標標示),將滑鼠停留在 c1 物件上以顯示數據提示。

    檢視數據提示

    數據提示會顯示變數的 c1 目前值,並可讓您檢查其屬性。 偵錯時,如果您看到您不預期的值,則可能在上述或呼叫程式代碼行中有錯誤。

  2. 展開資料提示以查看 c1 物件的目前屬性值。

  3. 如果您想要固定數據提示,以便在執行程式碼時繼續查看 c1 的值,請點擊小型固定圖示。 (您可以將釘選的數據提示移至方便的位置。

編輯程式代碼並繼續偵錯

如果您在偵錯會話中間識別您想要在程式碼中測試的變更,您也可以這麼做。

  1. 點選第c2.front()第二次出現,並將c2.front()變更為c2.back()

  2. F10 (或 偵錯 > 逐步執行) 幾次,以推進調試程式並執行編輯的程式代碼。

    編輯並繼續

    F10 會一次推進調試程式一個語句,但會略過函式而不是進入函式(您略過的程式碼仍然會執行)。

如需使用編輯後繼續和功能限制的詳細資訊,請參閱 編輯後繼續

後續步驟

在本教學課程中,您已瞭解如何啟動調試程式、逐步執行程序代碼,以及檢查變數。 您可能會想要深入瞭解調試程式功能,以及詳細信息的連結。