主要内容

调试马铃薯草代码文件

因为R2021b。替换调试Matlab程序(R2021A)和启动编辑器中的调试代码(R2021a)。

你可以在MATLAB中诊断问题®代码文件通过在编辑器和直播编辑器中交互地调试代码或通过使用命令窗口中的调试函数以编程方式调试代码。

有几种方法可以调试代码:

  • 通过删除分号显示输出。

  • 将代码运行为特定行并通过单击暂停跑到这里按钮。

  • 通过单击暂停时暂停函数和脚本一步按钮。

  • 在运行代码时,将断点添加到文件中以在特定行中暂停。

在开始调试之前,要避免意外结果,请保存代码文件并确保在搜索路径或当前文件夹中存在所呼叫的代码文件和任何所呼叫的任何文件。根据您从中调试的位置,MATLAB处理未求置的更改:

  • 编辑器-如果一个文件包含未保存的更改,MATLAB在运行它之前保存文件。

  • Live Editor - MATLAB运行文件中的所有更改,无论是保存还是未保存。

  • 命令窗口-如果一个文件包含未保存的更改,MATLAB运行文件的保存版本。您不会看到更改的结果。

显示输出

确定MATLAB代码文件中问题发生的位置的一种方法是显示输出。若要显示某一行的输出,请从该行末尾删除分号。在编辑器中,MATLAB在命令窗口中显示输出。在Live Editor中,MATLAB用创建输出的代码行显示输出。

例如,假设您有一个名为plotRand.m它画出一个随机数据向量,并在均值处画一条水平线。

n = 50;r = rand(n,1);绘图(r)m =平均值(r);抓住绘图([0,n],[m,m])保持离开标题('随机统一数据的平均值'

的输出兰德函数在第二行,删除行尾的分号。用MATLAB显示的值r在命令窗口中。

命令窗口显示对Plotrand函数的调用后跟生成的输出,r的值

在Live Editor中,Matlab显示值r两行。

plotRand活动脚本,第2行末尾删除分号,结果输出r值显示在右边

使用使用跑到这里按钮

如果您想要显示单个变量的状态,那么显示输出是很有用的。要探索工作空间中所有变量的状态,请运行代码文件,然后在运行指定的代码行之前暂停。

要将代码运行到指定的行,然后暂停,请单击跑到这里按钮左边的线。如果无法到达所选的行,MATLAB将继续运行,直到到达文件的末尾或遇到断点。

请注意

在职能和课程中,跑到此处按钮只能在调试时使用。

例如,单击该跑到这里的第二行左侧plotRand.m.MATLAB运行plotRand.m在运行第二行之前从一个和暂停开始暂停。

在左边空白处显示Run to Here按钮的plotRand脚本,在第二行的行号旁边

当MATLAB暂停时,会发生多种更改:

  • 运行按钮编辑或者住编辑器选项卡更改为继续按钮。

  • 命令窗口中的提示符变为K >>表示MATLAB处于调试模式,键盘处于控制状态。

  • MATLAB表示通过使用绿色箭头和绿色突出显示它的行。

    Plotrand脚本用绿色箭头和绿色突出显示,在第二行上突出显示,表明Matlab在二线暂停

提示

避免在MATLAB暂停时修改文件是一个很好的实践。当MATLAB暂停时所做的更改不会运行,直到MATLAB完成运行代码并重新运行代码。

在MATLAB暂停的行不会运行,直到您继续运行代码。要继续运行代码,请单击继续按钮。MATLAB继续运行文件,直到它到达文件的末尾或断点。您还可以单击代码行左侧的按钮,您要继续运行到。

要继续逐行运行代码,请在编辑或者住编辑器选项卡上,单击.MATLAB执行当前行,它暂停它并在下一行暂停。

Plotrand脚本用绿色箭头和绿色突出显示,指示Matlab在第三行暂停

调试时查看变量值

要在暂停MATLAB时查看变量的值,请将光标放在变量上。变量的当前值出现在数据提示中。数据提示保持视图,直到移动光标。要禁用数据提示,请转到看法选项卡,然后单击Datatips按钮关闭。

plotRand脚本在第2行暂停,并显示数据提示,显示变量n的值

您还可以通过在命令窗口中输入变量名来查看变量的值。例如,查看变量的值n, 类型n并按输入.命令窗口显示变量名称及其值。要查看当前工作区中的所有变量,请使用工作区浏览器。

有关更多信息,请参见在调试时检查值

暂停正在运行的文件

您可以在长时间运行的代码运行时暂停它,以检查进度并确保它按预期运行。要暂停正在运行的代码,请转到编辑或者住编辑器选项卡,然后单击暂停按钮。matlab停在下一个可执行的线条,暂停按钮更改为继续按钮。要继续运行代码,请按继续按钮。

请注意

点击暂停按钮可能导致MATLAB暂停在文件以外的自己的代码。

步进功能

在调试时,您可以进入名为文件,暂停在您想要检查值的点。要介入文件,请单击步入按钮直接向左侧的函数左侧进入。MATLAB仅当行包含对另一个函数的调用时,才会显示按钮。踩下后,单击Step Out按钮在文件顶部运行被调用函数的其余部分,离开被调用函数,然后暂停。

默认情况下,“Step In”按钮仅用于用户定义的函数和脚本。使按钮为MathWorks的活动状态®功能,在标签,在环境部分中,点击喜好.然后,选择马铃薯草>编辑/调试器,在调试部分,明确仅显示用户定义函数的上下文步骤按钮选项。

或者,使用使用时调试在调试时逐步进出功能一步或者走出来按钮上编辑或者住编辑器选项卡。这些按钮不尊重仅显示用户定义函数的上下文步骤按钮偏好和始终介入和退出用户定义的和MathWorks函数。

函数调用栈

当您进入名为函数或文件时,MATLAB显示在暂停当前行之前执行的功能列表。列表,也称为函数调用栈,显示在文件的顶部,并按顺序显示函数,从左侧启动,其中包含第一个被称为脚本或函数,并在右侧以当前脚本或函数暂停,右侧结束。

Plotrand的函数调用堆栈显示plotrand作为第一个被称为脚本的函数,并且是当前功能的含义

对于函数调用堆栈中的每个功能,有一个相应的工作空间。工作区包含您在MATLAB中创建的变量或从数据文件或其他程序导入。您通过命令窗口分配的变量或使用脚本创建属于基本工作区。您在功能中创建的变量属于自己的函数工作空间。

您可以通过选择不同的工作空间来检查当前工作空间之外的变量的值。有关更多信息,请参见在调试时检查值

添加断点和运行代码

如果您的文件中有代码线,则每次运行代码时要暂停,请在这些行中添加断点。您可以通过使用命令窗口中的函数或两者使用函数来交互式地添加断点。

有三种类型的断点:标准,条件和错误。要在编辑器或直播编辑器中添加标准断点,请单击要设置断点的可执行行左侧的灰色区域。例如,单击“三行”旁边的区域plotRand.m在该行添加断点。

在第三行带有红色断点的plotRand脚本

运行该文件时,Matlab暂停在断点指示的代码行。在继续运行代码后,MATLAB暂停的行不会运行。

例如,与plotRand.m文件在编辑器中打开,单击运行按钮编辑选项卡。MATLAB运行plotRand.m在运行第三行之前从一个和暂停开始暂停。

当MATLAB暂停时,会发生多种更改:

  • 运行按钮编辑或者住编辑器选项卡更改为继续按钮。

  • 命令窗口中的提示符变为K >>表示MATLAB处于调试模式,键盘处于控制状态。

  • MATLAB表示通过使用绿色箭头和绿色突出显示它的行。

    plot and脚本,在第三行有一个断点,在第三行有一个绿色箭头和绿色高亮显示,表示MATLAB在第三行暂停

提示

避免在MATLAB暂停时修改文件是一个很好的实践。在MATLAB暂停时进行的更改不会运行,直到MATLAB完成运行代码,代码重新运行。

要继续运行代码,请单击继续按钮。MATLAB继续运行文件,直到它到达文件的末尾或断点。要继续逐行运行代码,请在编辑或者住编辑器选项卡上,单击.MATLAB执行当前行暂停,然后在下一行暂停。

有关不同类型的断点以及如何设置,清除和禁用它们的更多信息,请参阅设置断点

结束调试会话

确定问题后,要结束调试会话,请转到编辑或者住编辑器选项卡并单击停止.结束调试后,正常>>命令窗口中的提示符重新出现在K >>迅速的。您不再可以访问函数调用堆栈。

为避免混淆,请务必每次完成调试时结束您的调试会话。如果您对文件进行更改并在调试时保存它,则Matlab结束了调试会话。如果MATLAB在暂停时无响应,请按Ctrl + C.结束调试。

调试使用键盘快捷键或功能

您可以使用键盘快捷键或使用命令窗口中的函数来执行大多数调试操作。此表介绍了调试操作和可以用于执行它们的相关键盘快捷键和功能。

行动 描述 键盘快捷方式 功能

继续

继续运行文件,直到达到文件的末尾或遇到另一个断点。

F5

dbcont

运行当前的代码行。

F10

shift + command + o苹果系统系统)

dbstep

一步

运行当前的代码行,如果行包含对另一个函数的调用,则进入该函数。

F11

shift + command + i苹果系统系统)

dbstep

走出来

进入之后,运行被调用函数的其余部分,离开被调用函数,然后暂停。

Shift +季

shift + command + u苹果系统系统)

dbstep出去

停止

结束调试会话。

Shift + F5.

dbquit.

设置断点

如果不存在断点,则将断点设置为当前行。

F12.

DBStop.

清除断点

清除当前行上的断点。

F12.

dbclear

相关话题