使用斷點
定義
在軟體開發中,斷點是程式中有意停止或暫停的位置,用於除錯目的。
更一般地,斷點是在程式執行期間獲取有關程式的知識的手段。在中斷期間,程式設計師檢查測試環境(通用暫存器,儲存器,日誌,檔案等)以查明程式是否按預期執行。實際上,斷點由一個或多個條件組成,這些條件決定程式的執行何時應該被中斷。
-Wikipedia
MATLAB 中的斷點
動機
在 MATLAB 中,當執行在斷點處暫停時,可以檢查當前工作空間(也稱為範圍 )或任何呼叫工作空間中存在的變數 (通常也會進行修改)。
斷點的型別
MATLAB 允許使用者在 .m
檔案中放置兩種型別的斷點:
- 標準(或非限制)斷點(以紅色顯示) - 每當到達標記行時暫停執行。
- 條件斷點(以黃色顯示) - 每當到達標記行時暫停執行並且斷點中定義的條件被評估為
true
。
放置斷點
可以通過多種方式建立這兩種型別的斷點:
-
使用 MATLAB 編輯器 GUI,右鍵單擊行號旁邊的水平線。
-
使用
dbstop
命令:% Create an unrestricted breakpoint: dbstop in file at location % Create a conditional breakpoint: dbstop in file at location if expression % Examples and special cases: dbstop in fit at 99 % Standard unrestricted breakpoint. dbstop in fit at 99 if nargin==3 % Standard conditional breakpoint. dbstop if error % This special type of breakpoint is not limited to a specific file, and % will trigger *whenever* an error is encountered in "debuggable" code. dbstop in file % This will create an unrestricted breakpoint on the first executable line % of "file". dbstop if naninf % This special breakpoint will trigger whenever a computation result % contains either a NaN (indicates a division by 0) or an Inf
-
使用鍵盤快捷鍵:在 Windows 上建立標準斷點的預設鍵是 F12 ; 對於條件斷點預設鍵為取消設定。
禁用和重新啟用斷點
禁用斷點以暫時忽略它:禁用的斷點不會暫停執行。可以通過多種方式禁用斷點:
- 右鍵單擊紅色/黃色斷點圓>禁用斷點。
- 左鍵單擊條件(黃色)斷點。
- 在編輯器選項卡>斷點>啟用\禁用。
刪除斷點
所有斷點都保留在檔案中,直到手動或自動刪除。結束 MATLAB 會話(即終止程式)時,斷點會自動清除。手動清除斷點可通過以下方式之一完成:
-
使用
dbclear
命令:dbclear all dbclear in file dbclear in file at location dbclear if condition
-
左鍵單擊標準斷點圖示或禁用的條件斷點圖示。
-
右鍵單擊任何斷點> Clear Breakpoint。
-
在編輯器選項卡>斷點>全部清除。
-
在 R1615b 之前版本的 MATLAB 中,使用命令
clear
。
恢復執行
在斷點處暫停執行時,有兩種方法可以繼續執行該程式:
-
執行當前行並在下一行之前再次暫停。
F10 編輯器中的 1 ,命令視窗中的
dbstep
,功能區>編輯器> DEBUG 中的步驟。 -
執行直到下一個斷點(如果沒有更多斷點,則執行繼續直到程式結束)。
F12 編輯器中的 1 ,命令視窗中的
dbcont
,功能區>編輯器> DEBUG 中的繼續。
1 - Windows 上的預設值。