斷點是您開發人員工具箱中最重要的偵錯技術之一。 您可以在想要中斷除錯執行的任何位置設定斷點。 例如,您可能會想要查看程式碼變數的狀態,或查看特定斷點的呼叫堆疊。
在原始碼中設定斷點
您可以在任何一行可執行的程式代碼上設定斷點。 例如,看看這個建立簡單迴圈的簡單 C# 程序代碼。
int testInt = 3;
for (int i = 0; i < 10; i++)
{
testInt += i;
}
您可以使用變數指派(int testInt = 3
)、for
迴圈或 for
迴圈內的任何程式代碼,在程式碼行上設定斷點。 如果沒有指派且沒有 getter/setter,則無法在方法簽章、命名空間或類別的宣告或變數宣告上設定斷點。
若要在原始碼中設定斷點:
- 點擊最左邊的邊界,旁邊有一行程式碼。 您也可以選取這一行,然後按 F9,選取 [偵錯]>[切換斷點],或以滑鼠右鍵點擊並選取 [斷點],[插入斷點]>。 斷點會顯示為左邊界中的紅點。
對於大部分的語言(包括 C#),Visual Studio 會自動醒目提示斷點和當前的執行行。 對於某些語言,例如預設不會被高亮顯示的C++,您可以選擇 [工具] 或 [偵錯],然後開啟 >[選項]>[偵錯],啟用「高亮 C++ 專用的斷點和目前語句的整個原始程式行」>。
若要偵錯,請按 F5 ,或選取 [偵錯]>[開始偵錯]。
當您偵錯時,執行會在斷點處暫停,然後再執行該行的代碼。 斷點符號會顯示黃色箭號。
在下列範例中的斷點上,testInt
的值仍然為 3。 因此,由於變數已初始化,所以值尚未變更(設為3的值),因為黃色的語句尚未執行。
在下列範例中的斷點上,testInt
的值仍然為1。 因此,由於變數已初始化,所以值尚未變更(設為1值),因為黃色的語句尚未執行。
當除錯程式在斷點停止時,您可以查看應用程式的目前狀態,包括 變數值 和 呼叫堆疊。
例如,在下圖中,您可以在數據提示和 testInt
視窗中看到 的值。
以下是一些使用斷點的一般指導方針。
斷點是一個可切換的開關。 您可以按下它、按 F9 ,或使用 Debug>Toggle Breakpoint 來刪除或重新插入它。
若要停用斷點而不刪除斷點,請將滑鼠游標懸停在斷點上或右鍵單擊,然後選取 停用斷點。 已停用的斷點會顯示為左邊界中的空白圓點,或 斷點 視窗。 若要重新啟用斷點,請將游標懸停於斷點上或右鍵點選,然後選取 啟用斷點。
設定條件和動作、新增或編輯標籤,或以滑鼠右鍵點擊斷點並選取適當的命令,或者將滑鼠懸停在斷點上,然後選取 設定 圖示。
斷點的類型
Visual Studio 支援不同類型的斷點來支援不同的偵錯案例,例如僅根據指定準則啟動的條件斷點。 如需詳細資訊,請參閱 使用正確的斷點類型。
在 [斷點] 視窗中管理斷點
您可以使用 [斷點] 視窗來查看和管理解決方案中的所有斷點。 這個集中式位置在大型解決方案中特別有幫助,尤其是在斷點至關重要的複雜偵錯情境中。
在 斷點 視窗中,您可以搜尋、排序、篩選、啟用/停用或刪除斷點。 您也可以設定條件和動作,或新增函式或數據斷點。
若要開啟 [斷點] 視窗,請選取 [偵錯>Windows>斷點],或按 Ctrl+Alt+B。
若要選取要顯示在 [斷點] 視窗中的數據行,請選取 [[顯示資料行]。 選取欄位標題,以該欄排序斷點清單。
斷點標籤
您可以使用標籤來排序和篩選 [斷點] 視窗中的斷點清單。
- 若要將標籤新增至斷點,請以滑鼠右鍵點擊原始碼中的斷點或 [斷點] 視窗,然後選取 [編輯標籤]。 新增標籤或選擇現有的標籤,然後選取 [確定] [確定]。
- 在 斷點 視窗中,透過選擇 標籤、條件或其他欄位標題,對斷點清單進行排序。 您可以在工具列中選擇 [顯示資料行],以選擇要顯示的資料行。
斷點群組
針對複雜的偵錯場景,您可能想要建立斷點群組來管理斷點。 這可讓您根據您嘗試偵錯的目前情境,快速啟用和停用斷點的邏輯分組。
在 [斷點] 視窗中,您可以透過選取 [新增 > 斷點群組],並為該群組提供名稱來建立斷點。 若要將斷點新增至群組,請以滑鼠右鍵按兩下斷點,然後選擇 [新增至斷點群組]><組名>。 或者,將斷點拖放到所需的群組中。
若要設定預設斷點群組,請以滑鼠右鍵點擊某個群組,然後選取[[設定為預設斷點群組]。 當您設定預設斷點群組時,新建立的斷點會自動新增至群組。
匯出和匯入斷點
若要儲存或共享斷點的狀態和位置,您可以匯出或匯入它們。
從 Visual Studio 2022 17.12 版 Preview 3 開始,斷點群組也會包含在導出和匯入的斷點中。
- 若要將單一斷點匯出至 XML 檔案,請以滑鼠右鍵按一下原始程式碼中的斷點或 斷點 視窗中的斷點,然後選取 匯出 或 匯出選取內容。 選擇匯出位置,然後選擇 [儲存]。 預設位置是方案資料夾。
- 若要匯出數個斷點,請在 [斷點] 視窗中,選取斷點旁的方塊,或在 [搜尋 ] 欄位中輸入搜尋 準則。 選取 [匯出符合目前搜尋準則的所有斷點 圖示,然後儲存盤案。
- 若要匯出所有斷點,請取消選取所有方塊,並將 [搜尋] 字段保留空白。 選取 [匯出符合目前搜尋準則的所有斷點 圖示,然後儲存盤案。
- 若要匯入斷點,請在 [斷點] 視窗中,選取 [從檔案匯入斷點] 圖示,流覽至 XML 檔案位置,然後選取 [開啟]。
從調試程式視窗設定斷點
您也可以從 呼叫堆疊 和 反組譯 偵錯視窗設定斷點。
在 [呼叫堆疊] 視窗中設定斷點
若要在呼叫函式傳回的指令或行中斷,您可以在 [呼叫堆棧] 視窗中設定斷點。
若要在 [呼叫堆棧] 視窗中設定斷點:
若要開啟 呼叫堆疊 視窗,您必須在偵錯期間暫停。 選取 [偵錯>Windows>呼叫堆棧],或按 Ctrl+Alt+C。
在 [呼叫堆疊] 視窗中,以滑鼠右鍵單擊呼叫函式,然後選取 [斷點]>[插入斷點],或按 F9。
斷點符號會出現在呼叫堆疊左邊界的函式呼叫名稱旁邊。
呼叫堆疊斷點會以位址形式出現在 斷點 視窗中,並具有其對應於函式中下一個可執行指令的記憶體位置。
調試程式會在指令中中斷。
如需呼叫堆疊的詳細資訊,請參閱 如何:使用呼叫堆疊視窗。
若要在程式代碼執行期間以可視化方式追蹤斷點,請參閱偵錯 時,在呼叫堆棧上對應方法。
在反組譯碼視窗中設定斷點
若要開啟 反編譯 視窗,您必須在偵錯期間暫停。 選擇 [偵錯>Windows>反組譯碼],或 按 Ctrl+Alt+D。
在 [反組譯碼] 視窗中,點擊您想要中斷的指令左邊。 您也可以選擇它,然後按 F9,或右鍵點擊並選取 [斷點],>[插入斷點]。
相關內容
- 什麼是偵錯?
- 使用 Visual Studio 撰寫更好的 C# 程式代碼
- 第一次查看偵錯
- Visual Studio 調試程式中的斷點疑難解答