使用断点
定义
在软件开发中,断点是程序中有意停止或暂停的位置,用于调试目的。
更一般地,断点是在程序执行期间获取有关程序的知识的手段。在中断期间,程序员检查测试环境(通用寄存器,存储器,日志,文件等)以查明程序是否按预期运行。实际上,断点由一个或多个条件组成,这些条件决定程序的执行何时应该被中断。
-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 上的默认值。