使用断点

定义

在软件开发中,断点是程序中有意停止或暂停的位置,用于调试目的。

更一般地,断点是在程序执行期间获取有关程序的知识的手段。在中断期间,程序员检查测试环境(通用寄存器,存储器,日志,文件等)以查明程序是否按预期运行。实际上,断点由一个或多个条件组成,这些条件决定程序的执行何时应该被中断。

-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 上的默认值。