斷點是在可執行程式碼中,操作系統會在此停止執行並進入除錯器的地方。 這可讓您分析目標和發出調試程式命令。
您可以依虛擬位址、模組及常式位移,或來源檔及行號 (處於來源模式時) 來指定岔斷點的位置。 如果您在沒有位移的常式上放置岔斷點,則在輸入該常式時會啟動岔斷點。
還有數種其他類型的中斷點:
岔斷點可以與特定執行緒相關聯。
中斷點可設定在觸發前允許透過一個地址的固定次數。
岔斷點可以在觸發時自動發出特定命令。
可以在不可執行的記憶體上設定中斷點,並監控該位置是否被讀取或寫入。
如果您在使用者模式中除錯多個處理程序,中斷點的集合取決於現行處理程序。 若要檢視或變更處理程序的岔斷點,您必須選取處理程序作為目前處理程序。 如需目前進程的詳細資訊,請參閱 控制進程和執行緒。
用於控制和顯示中斷點的偵錯工具命令
若要控制或顯示中斷點,您可以使用下列方法:
使用 bl (岔斷點清單) 指令來列出現有岔斷點及其目前狀態。
使用 .bpcmds (顯示岔斷點指令) 指令來列出所有岔斷點,以及用來建立岔斷點的指令。
使用 bp (設定岔斷點) 指令來設定新的岔斷點。
使用 bu (設定未解析的岔斷點) 指令來設定新的岔斷點。 使用 bu 設定的岔斷點稱為未解析的岔斷點;它們與使用 BP 設定的岔斷點具有不同的性質。 如需完整詳細資訊,請參閱 未解析的斷點(bu 斷點)。
使用 bm (設定符號中斷點) 指令,在符合指定模式的符號上設定新的中斷點。 如果包含 /d 參數,則使用 bm 設定的中斷點將與位址 (例如 bp 中斷點) 相關聯;如果未包含此開關,則將無法解決 (例如 BU 斷點)。
使用 ba (Break on Access) 指令來設定 處理器岔斷點,也稱為 資料岔斷點。 當記憶體位置被寫入時、讀取時、當執行程式碼時或當核心 I/O 發生時,這些中斷點可以被觸發。 如需完整詳細資料,請參閱 處理器中斷點(ba 中斷點)。
使用 bc (岔斷點清除) 指令來永久移除一或多個岔斷點。
使用 bd (岔斷點停用) 指令來暫時停用一或多個岔斷點。
使用 be (啟用岔斷點) 指令來重新啟用一或多個已停用的岔斷點。
使用 br (岔斷點重新編號) 指令來變更現有岔斷點的 ID。
使用 bs (更新岔斷點指令) 指令來變更與現有岔斷點相關聯的指令。
使用 bsc (更新條件式岔斷點) 指令來變更現有條件岔斷點發生的條件。
在 WinDbg 中,有數個使用者介面元素可協助控制和顯示中斷點。 請參閱 在 WinDbg (傳統) 中設定中斷點。
每個岔斷點都有一個十進位數,稱為與其相關聯的岔斷點 ID。 此數字可識別各種命令中的中斷點。
中斷點命令
您可以在斷點中包含命令,該命令會在斷點命中時自動執行。 例如,下列命令會在 MyFunction+0x47 暫停,轉存檔案,然後繼續執行。
0:000> bu MyFunction+0x47 ".dump c:\mydump.dmp; g"
注意 如果您要從核心偵錯工具控制使用者模式偵錯工具,請勿在中斷點命令字串中使用 g (Go)。 串列介面可能無法跟上此命令,您將無法重新進入 CDB。 如需此狀況的詳細資訊,請參閱 從 核心偵錯工具控制 User-Mode 偵錯工具。
中斷點數目
在核心模式中,您最多可以使用 32 個軟體中斷點。 在使用者模式中,您可以使用任意數目的軟體中斷點。
支援的處理器岔斷點數目取決於目標處理器架構。
條件式中斷點
您可以設定僅在特定條件下觸發的岔斷點。 如需這些類型中斷點的詳細資訊,請參閱 設定條件式中斷點。
模棱兩可的斷點
在調試程式引擎的 10.0.25310.1001 版和更新版本中,現在支援模棱兩可的斷點解析。 模棱兩可的斷點可讓調試程式在特定斷點表達式解析為多個位置的案例中設定斷點。 如需詳細資訊,請參閱 不明确的斷點解析。