共用方式為


偵錯基本概念:中斷點

這個主題適用於:

版本

Visual Basic

C#

F#

C++

Web Developer

Express

標題適用於

標題適用於

標題適用於 標題適用於 標題適用於

Pro、Premium 和 Ultimate

標題適用於

標題適用於

標題適用於

標題適用於 標題適用於

「中斷點」(Breakpoint) 是用來通知偵錯工具暫時在程式的某一點暫止執行的訊號。 當執行暫止於中斷點時,程式將處於中斷模式下。 進入中斷模式並不會停止或結束程式的執行,隨時都可以繼續執行。

您可以將中斷模式視為逾時一樣。 所有項目依然存在 (例如函式、變數及物件都會留在記憶體中),不過這些項目的移動和活動都會暫停。 在中斷模式下,您可以檢查項目的位置和狀態,以尋找違規或錯誤。 在中斷模式下,您也可以對程式進行調整時,例如,您可以變更變數的值。 您可以移動執行點,以變更繼續往下執行時將會執行到的下個陳述式 (Statement)。 在 C++、C# 和 Visual Basic 中,您甚至可以使用名為「編輯後繼續」的強大功能,在中斷模式下變更程式碼本身。

中斷點可以提供讓您在必要的位置和時間上暫止執行的強大工具。 您可讓程式持續執行至叫用中斷點後,再開始進行偵錯,而不是按程式碼行或按指令逐步執行程式碼。 這可加快偵錯過程。 如果沒有這種功能,根本無法偵錯大型程式。

許多程式設計語言都擁有可暫止執行並讓程式進入中斷模式的陳述式或建構。 例如,Visual Basic 就具有 Stop 陳述式。 中斷點和這些陳述式不同,因為中斷點並非必須加入至程式的實際原始程式碼。 您並不會將中斷點陳述式輸入至來源視窗中。 您會透過偵錯工具介面要求中斷點,接著偵錯工具就會替您設定這個中斷點。 若要在一行中插入中斷點,按一下想要設定中斷點那一行旁邊的灰色邊界。 您可以使用全功能的 [中斷點] 視窗,處理更複雜的中斷點。

相較於像是 Visual Basic Stop 陳述式之類的偵錯建構,中斷點有許多優點。 不需變更程式的原始程式碼,即可刪除或變更中斷點。 因為中斷點並非陳述式,當您建置程式的發行版本 (Release Version) 時,絕不會產生任何額外的程式碼。 如果您在程式內使用 Stop 陳述式,則在建置發行版本之前,您必須先手動移除這些 Stop 陳述式,不然就必須使用條件,如下所示:

#If DEBUG Then
    Stop
#End If

如果您要暫時停用 Stop 陳述式,您必須在原始程式碼內找出該陳述式,再將它標記為註解:

 ' Stop

如果只有一個 Stop 陳述式,並不會造成問題。 然而,如果您正在偵錯一個包含許多 Stop 陳述式的大型程式,則搜尋所有陳述式並逐一標記為註解可能會非常耗時。 透過使用中斷點,您可以從 [中斷點] 視窗選取並停用或啟用任何或所有中斷點。

總之,就使用上的彈性而言,中斷點具有較 Stop 陳述式更大的優勢。 Stop 陳述式會在此陳述式所在的原始程式行上中斷執行。 您可以在該相同目的之原始行上設定中斷點。 或者,您還可以在函式或記憶體位址上設定中斷點,這點是 Stop 陳述式做不到的。 除了這些位置中斷點,Visual Studio 偵錯工具還提供僅適用於機器碼的資料中斷點。 資料中斷點是在全域變數或區域變數上設定,而非程式碼中的某個位置上。 設定資料中斷點可以在變數的數值變更時中斷執行。

為了提供更大的使用彈性,Visual Studio 偵錯工具還可讓您設定屬性來修改中斷點的行為:

  • 叫用次數:可讓您決定要在叫用幾次中斷點之後,才讓偵錯工具中斷執行。 根據預設,偵錯工具會在每次叫用中斷點時中斷執行。 您可設定叫用次數,指定每叫用 2 次、10 次或 512 次 (或任何您選擇的次數) 中斷點時,就要求偵錯工具中斷執行。 叫用次數是很有用的功能,因為某些錯誤在程式第一次執行某個迴圈 (Loop)、呼叫函式或存取某變數時並不一定會出現。 有時候,這種 Bug 要等到重複執行到第 100 次或 1000 次時才出現。 若要偵錯這類問題,您可以設定一中斷點,並將其叫用次數設成 100 或 1000。

  • 條件:是用來決定要叫用或略過中斷點的運算式。 當偵錯工具到達中斷點時,它會評估該條件。 中斷點必須在該條件成立時,才會被叫用。 您可以將條件與位置中斷點一起使用,以便只在某個條件成立時,才中斷於指定位置上。 例如,假設您正在偵錯一個銀行業務的程式,對此程式而言,帳戶的餘額一定不能低於零。 您可在程式碼的某些位置上設定中斷點,並將 balance < 0 之類的條件附加至每個中斷點。 當您執行程式時,執行只會在餘額低於零時,才在這些位置上中斷。 您可以檢查第一個中斷點位置的變數與程式狀態,接著繼續執行到第二個中斷點位置,依此類推。

  • 動作:會指定在叫用中斷點時要發生的事情。 根據預設,偵錯工具會中斷執行,但是您也可以選擇列印訊息,或是執行 Visual Studio 巨集。 如果您決定列印訊息而非中斷,則中斷點的作用就非常類似 Trace 陳述式。 這種使用中斷點的方法稱為追蹤點。

  • 篩選條件:可讓您針對中斷點指定處理序或執行緒。

    注意事項注意事項

    在 [呼叫堆疊] 視窗內設定中斷點是相當有用的技巧。 透過使用 [呼叫堆疊] 視窗,您可在特定的函式呼叫上設定中斷點。 當您偵錯遞迴函式 (呼叫本身的函式) 時,這個功能特別有用。 如果您在呼叫特定次數之後中斷執行,您可使用 [呼叫堆疊] 視窗,在尚未返回的先前呼叫上設定中斷點。 偵錯工具會在離開目前呼叫時碰到該中斷點,並中斷執行。

請參閱

工作

HOW TO:使用中斷點視窗

概念

中斷點和追蹤點

中斷點和追蹤點

其他資源

偵錯工具資料表