使用斷點

定義

在軟體開發中,斷點是程式中有意停止或暫停的位置,用於除錯目的。

更一般地,斷點是在程式執行期間獲取有關程式的知識的手段。在中斷期間,程式設計師檢查測試環境(通用暫存器,儲存器,日誌,檔案等)以查明程式是否按預期執行。實際上,斷點由一個或多個條件組成,這些條件決定程式的執行何時應該被中斷。

-Wikipedia

MATLAB 中的斷點

動機

在 MATLAB 中,當執行在斷點處暫停時,可以檢查當前工作空間(也稱為範圍 )或任何呼叫工作空間中存在的變數 (通常也會進行修改)。

斷點的型別

MATLAB 允許使用者在 .m 檔案中放置兩種型別的斷點:

  • 標準(或非限制)斷點(以紅色顯示) - 每當到達標記行時暫停執行。
  • 條件斷點(以黃色顯示) - 每當到達標記行時暫停執行並且斷點中定義的條件被評估為 true

StackOverflow 文件

放置斷點

可以通過多種方式建立這兩種型別的斷點:

  • 使用 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 上的預設值。