在這份快速入門中,你將探索如何使用 Visual Studio 除錯器來除錯你的原生 C++ 程式碼。 本文提供快速學習除錯器基本功能的方法。
如果你還沒有Visual Studio,可以從Visual Studio下載頁面安裝免費試用版。
建立新專案
先建立一個新專案,這樣你就有一些程式碼可以在除錯器裡檢查。
開啟 Visual Studio 並建立新的專案。
如果 開始視窗 沒開啟,請選擇 檔案>開始視窗。
在開始視窗中,選擇 建立新專案。
在 「建立新專案 」視窗中,設定篩選條件並搜尋專案範本。
在 「搜尋範本」 欄位輸入 空字。
展開 語言 下拉選單,選擇 C++。
在結果列表中,選擇 C++ 的 Empty Project 模板,然後選擇 Next。
如果你看不到 C++ 的 Empty Project 範本,請選擇 Continue without code 選項。
選擇 Tools>取得工具與功能...,這會開啟Visual Studio安裝程式。
在安裝程式視窗中,選擇 桌面開發與 C++ 工作負載的勾選框,然後選擇 修改。
你的 Visual Studio 安裝會更新,包含所選的 C++ 工作負載。
更新完成後,選擇 檔案>開始視窗,並依 照前述指示 選擇所需的範本。
設定新專案:
輸入 Project 名稱 和 Solution 名稱,或使用預設值。
使用預設 的位置 或選擇瀏覽(...)來建立專案到另一個資料夾。
選取 ,創建。
Visual Studio 會建立你的新專案,並將專案檔案加入指定的資料夾。
新增專案檔案
新增一個程式碼檔,這樣你就有內容可以在除錯器中測試。
在 方案總管 面板中,右鍵點擊你的 <project-name>,選擇 Add>New Item。
如果你沒看到方案總管面板,請選擇View>方案總管。
在 新增項目 對話框中,輸入檔名 MyDbgApp.cpp,然後選擇 新增。
檔案會在程式碼編輯器中開啟。
將以下程式碼加入新檔案。
#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(); }用 Ctrl+S 鍵盤快捷鍵儲存檔案變更。
設定中斷點
中斷點是一種標記,用來指出 Visual Studio 應在哪裡暫停您正在執行的程式碼。 當斷點設定時,你可以查看變數目前的值,檢視記憶體的行為,並檢查是否有特定分支的程式碼在執行。 斷點是除錯中最基本的功能。
若要設定中斷點,請在程式碼中找出對
doWork()函式的呼叫,然後選取同一行左側邊欄中的位置。設定中斷點後,程式碼中對應的那一行左側邊欄會顯示一個紅點。
使用 F5 鍵快捷鍵開始除錯(或選擇 除錯>開始除錯)。
程式碼執行會在呼叫
doWork()函式前立即暫停。偵錯工具會在您設定的斷點處暫停。 黃色箭頭標示除錯器暫停應用程式執行的語句。
小提示
當你在 C++ 程式碼中對記憶體相關錯誤進行除錯時,也可以使用中斷點來查看位址值(尋找
NULL)和參考計數。
設定條件斷點
如果你在迴圈或遞迴中設定斷點,或是你有許多經常跨入的斷點,請使用 條件斷點。
此方法有助於確保 只有在符合 特定條件時,程式碼才會被暫停。 條件斷點可以節省時間,也讓難以重現的問題更容易除錯。
逐一檢視你的程式碼
Visual Studio 提供多種方式指示除錯器繼續執行應用程式。 以下範例顯示了一個實用的指令,用來逐步檢視你的程式碼。
當程式碼在中斷點暫停時,將游標停留在陳述式 c1.push_back(20) 上,直到看見綠色的 按一下即可執行至此(將執行移至此處)
圖示。 選擇圖示。
當程式碼在中斷點暫停時,將滑鼠游標停留在該陳述式 c1.AddLast(20) 上,直到您看見綠色的 按一下即可執行(執行至此處)
圖示。 選擇圖示。
應用程式會繼續執行,呼叫 doWork,並在你選擇 執行點擊的程式碼行上暫停。
用來逐步執行程式碼的常用鍵盤命令包括 F10 和 F11。 欲了解更多更深入的指令,請參見 Visual Studio除錯器概述。
檢查資料提示中的變數
你可以利用 資料提示 功能檢查變數的狀態。
在目前程式碼行(以黃色執行指標標記)中,將滑鼠移到
c1物件上方即可看到資料提示。
數據提示會顯示變數的
c1目前值,並可讓您檢查其屬性。在除錯時,如果你看到某個變數的值出乎預期,那很可能表示程式有錯誤。 錯誤可能出在呼叫變數的程式碼,或是前一行。
展開資料提示以查看
c1物件的目前屬性值。若要在程式碼執行時繼續檢查
c1的值,請選取資料提示上的 圖釘
圖示。針腳動作會讓資料尖端保持開啟。 當程式碼執行時,釘選尖端的值會改變,顯示被監視物件的當前狀態。
你可以將置頂提示移到 IDE 內的任何位置,這樣在除錯時就不會妨礙你查看其他項目。
除錯時啟用熱重載
在除錯時,如果你發現程式碼中有想測試的變更,可以使用 熱重新載入 功能(之前稱為 Edit and Continue)。
選擇該語句的
c2.front()第二個實例,並將程式碼改為c2.back()。請按幾次 F10(或選擇幾次 偵錯>逐步略過),以讓偵錯工具往前執行並執行已編輯的程式碼。
F10 會一次推進調試程式一個語句,但會略過函式而不是進入函式(您略過的程式碼仍然會執行)。
欲了解更多此功能與限制,請參閱 Configure 熱重新載入。