主要内容

设置断点

自 R2021b 起. 替换 Set Breakpoints (R2021a).

设置断点会暂停 MATLAB® 程序的执行,以便您检查可能出现问题的值。您可以在编辑器或实时编辑器中以交互方式设置断点,也可以使用命令行窗口中的函数设置断点。

有三种类型的断点:

  • 标准

  • 条件

  • 错误

您可以只选择那些保存在特定位置(当前文件夹或搜索路径上的文件夹)的文件,在这些文件的可执行代码行处设置断点。您可以随时设置断点,无论 MATLAB 是处于闲置状态还是在忙于运行文件。

默认情况下,当 MATLAB 到达断点时,它会打开包含该断点的文件。要禁用此选项,请执行以下操作:

  1. 主页选项卡上,点击环境部分中的 设置

  2. 在“设置”窗口中,选择 MATLAB > 编辑器/调试器

  3. 清除当 MATLAB 到达断点时自动打开文件选项,然后点击确定

标准断点

标准断点在文件的特定行暂停。要设置标准断点,请点击要设置断点的可执行代码行左侧的灰色区域。您也可以按 F12 键在当前行设置断点。如果您尝试在可执行代码行以外的行处设置断点,例如注释或空白行,则 MATLAB 会在下一个可执行代码处行设置断点。

plotRand script with a red breakpoint at line three

要以编程方式设置标准断点,请使用 dbstop 函数。例如,要在名为 plotRand.m 的文件的第 3 行添加断点,请键入:

dbstop in plotRand at 3

调试包含循环的文件时,应在循环内设置断点,以检查在循环的每个增量处的值。否则,如果只在循环开始时设置断点,则 MATLAB 只会在循环语句处暂停一次。例如,以下代码创建了一个包含 10 个 1 的数组,并使用 for 循环对数组中的第 2 项到第 6 项执行计算:

x = ones(1:10);

for n = 2:6
    x(n) = 2 * x(n-1);
end
要使 MATLAB 在 for 循环的每个增量处暂停(总共五次),请在第四行设置断点。

Script showing a for loop with a red standard breakpoint on the line inside the loop

条件断点

如果使用条件断点,MATLAB 只在满足指定条件时才在文件的指定行处暂停。例如,如果您想在循环中进行一些迭代后再检查结果,则可以使用条件断点。

要设置条件断点,请右键点击要设置断点的可执行代码行左侧的灰色区域,然后选择设置条件断点。如果该行上已存在断点,请选择设置/修改条件您也可以通过右键点击断点并选择设置/修改条件在“调试器”面板中设置或修改条件。 (自 R2025a 起)在打开的对话框中,输入条件并点击确定。条件是任何返回逻辑标量值的有效 MATLAB 表达式。

运行代码时,MATLAB 会在运行该行之前评估条件。如果满足条件,MATLAB 将进入调试模式,并在该行暂停。例如,以下代码创建了一个包含 10 个 1 的数组,并使用 for 循环对数组中的第 2 项到第 6 项执行计算:

x = one(1:10)

for n = 2:6
    x(n) = 2 * x(n-1);
end

在第四行用条件 n >= 4 设置条件断点。当您运行代码时,MATLAB 会运行两次 for 循环,并在 n 等于 4 的条件下进行第三次迭代时在第 4 行暂停。如果继续运行代码,则当 n 等于 5 时,MATLAB 会在第四次迭代的第四行再次暂停,然后当 n 等于 6 时再次暂停。

Script with a for loop with an orange conditional breakpoint on the line inside the loop

要以编程方式设置条件断点,请使用 dbstop 函数。例如,要在 myprogram.m 的第 6 行添加条件断点,请键入:

dbstop in myprogram at 6 if n>=4

错误断点

如果 MATLAB 遇到问题,您可以将错误断点设置为让 MATLAB 暂停并进入调试模式。

与标准断点和条件断点不同的是,您不用在具体行或具体文件中设置错误断点。设置错误断点后,只要符合所指定的错误条件,MATLAB 便会在任意文件的任意行处暂停。MATLAB 随后会进入调试模式,打开包含错误的文件,并且在包含错误的行上会出现执行箭头。

您可以在“调试器”面板中设置错误断点。要打开“调试器”面板(如果它尚未打开),请转至编辑器实时编辑器选项卡,在分析部分中,点击 调试器。您还可以使用边栏上的“打开更多面板”按钮 打开面板。 (自 R2025a 起)

要设置错误断点,请在“调试器”面板的断点部分中选择以下选项之一:

  • 出现错误时暂停,即一遇到错误就暂停。

  • 出现警告时暂停,即一遇到警告就暂停。

  • 出现 NaN 或 Inf 时暂停,即在遇到 NaN(非数字)或 Inf(无限)值时暂停。

  • 出现未隐藏的输出时暂停,即在显示未隐藏的输出时暂停执行,因为该行没有被分号 (;) 隐藏。

Debugger panel with the Breakpoints section showing the four error breakpoints. The Pause on Errors breakpoint is selected.

您也可以通过转至编辑器选项卡,点击 运行 并从错误处理部分中选择选项来在编辑器中设置错误断点。

要以编程方式设置错误断点,请使用具有指定 conditiondbstop 函数。例如,要一遇到错误就暂停执行,请键入:

dbstop if error
要在 try/catch 块的 try 部分内第一次发生运行时错误且消息 ID 为 MATLAB:ls:InputsMustBeStrings 时暂停执行,请键入:
dbstop if caught error MATLAB:ls:InputsMustBeStrings

在 R2025a 之前的版本中: 不支持在实时编辑器中设置错误断点。

匿名函数中的断点

您可以在包含匿名函数的 MATLAB 代码行中设置多个断点。您可以为行本身和行中的每个匿名函数设置一个断点。

要在包含匿名函数的行上设置断点,请点击该行左侧的灰色区域。MATLAB 为该行添加断点,并为该行中的每个匿名函数添加一个处于禁用状态的断点。要为匿名函数启用断点,请点击该函数处于禁用状态的断点。

要查看一行中所有断点的信息,请将光标放在断点图标上。随即会显示工具提示及可用信息。例如,在以下代码中,第 7 行包含两个匿名函数,每个匿名函数都有一个断点。

Script showing a line of code with two anonymous functions, with red breakpoints displayed on the line number and before each of the two anonymous functions. A tooltip displays information about the breakpoints.

当您在匿名函数中设置断点时,MATLAB 会在调用匿名函数时暂停。以绿色突出显示的代码行是代码定义匿名函数的位置。以灰色突出显示的代码行是代码调用匿名函数的位置。例如,在以下代码中,MATLAB 在为匿名函数 g 设置的断点处暂停程序,该函数在第 7 行定义,并在第 8 行调用。

Script showing a line of code with two anonymous functions. The line has a green arrow and green highlighting, indicating that MATLAB is paused at that line. The line below it is highlighted in gray, indicating that it is the line that called the anonymous functions.

无效断点

深灰色断点表示无效断点。

Script showing a dark gray, invalid breakpoint at line three

出现以下情况时,断点无效:

  • 文件中未保存的更改。保存该文件以使断点有效。灰色断点变为红色,表示它们现在变为有效了。

  • 文件中的语法错误。当您设置断点时,会显示一则错误消息,指示语法错误的位置。修复语法错误并保存文件以使断点有效。

禁用断点

您可以禁用所选断点以便让程序暂时忽略它们而不中断运行。例如,您可以在您认为发现并更正了问题后或使用条件断点时禁用断点。

要禁用断点,请在编辑器或实时编辑器中右键点击断点图标,然后从上下文菜单中选择禁用断点。断点变为浅灰色,表示它已禁用。要重新启用断点,请右键点击断点图标,从上下文菜单中选择启用断点。灰色断点变为红色,程序执行在该行暂停。要从“调试器”面板禁用或重新启用某断点,请右键点击面板中的该断点并选择禁用启用 (自 R2025a 起)

Script showing a light gray, disabled breakpoint at line three

要启用或禁用文件中的所有断点,请右键点击可执行文件行左侧的灰色区域,然后选择启用文件中的所有断点禁用文件中的所有断点。只有当至少有一个断点可供启用或禁用时,才能使用这些选项。

清除断点

所有断点都保留在文件中,直到您清除(删除)它们为止,或直到它们在您的 MATLAB 会话结束时自动被清除为止。

要清除断点,请右键点击断点图标,然后从上下文菜单中选择清除断点。您也可以按 F12 键清除断点。要清除文件中的所有断点,请右键点击断点列,然后选择清除文件中的所有断点。要清除所有文件中的全部断点(包括错误断点),请右键点击断点列,然后选择清除全部断点

在“调试器”面板中,要清除某断点,请右键点击面板中的该断点并选择清除。要清除所有断点,请在面板顶部点击 drop-down arrow 旁边的“清除”按钮 并选择清除所有断点 (自 R2025a 起)

要以编程方式清除断点,请使用 dbclear 函数。例如,要清除名为 myprogram.m 的文件中第 6 行处的断点,请键入:

 dbclear in myprogram at 6

要在名为 myprogram.m 的文件中清除所有断点,请键入:

dbclear all in myprogram

要清除所有文件中的所有断点,请键入:

dbclear all

在您终止 MATLAB 会话时,系统会自动清除断点。要保存断点以用于后续会话,请使用 dbstatus 函数。

另请参阅

主题