MATLAB App Designer从入门到实践
上QQ阅读APP看书,第一时间看更新

要以图形方式调试MATLAB程序,可使用编辑器,也可以在命令行窗口中使用调试函数。两种方法可互换。

开始调试之前,应确保程序已保存且该程序及其调用的任何文件位于搜索路径或当前文件夹中。

(1)如果在未保存更改的情况下从编辑器内运行文件,该文件在运行前会自动保存。

(2)如果从命令行窗口运行未保存更改的文件,则MATLAB软件会运行已保存的文件版本,因此看不到更改结果。

设置断点可暂停执行MATLAB文件,以便检查可能存在问题的值或变量。可以使用编辑器、命令行窗口中的函数或同时使用这两种方法设置断点。

有3种不同类型的断点:标准断点、条件断点和错误断点。要在编辑器中添加标准断点,应在要设置断点的可执行代码行的断点列处单击。断点列是编辑器左侧、行号右侧的窄列。也可以使用F12键来设置断点。

在M文件中,断点列中的可执行代码行以虚线(-)指示(见图1-10);在实时编辑器文件(.mlx)中,以深色指示(见图1-11)。

1-11

图1-10 M文件添加断点

1-10

图1-11 实时编辑器添加断点

如果可执行语句跨多行,可以在该语句中的每一行均设置断点,即使其他行在断点列中没有-(虚线)也可以,这种情况一般出现在循环中的跨行语句(即带英文省略号“…”的语句)中。例如,在图1-12所示的代码中,可以在所有行中均设置断点。

图片 37

图1-12 代码换行

设置断点后,在命令行窗口或编辑器运行该文件。运行该文件会产生以下结果。

(1)“运行”按钮更改为“继续”按钮。

(2)命令行窗口中的提示符将更改为“K>>”,指示MATLAB处于调试模式且键盘受控制。

(3)MATLAB在该程序的第一个断点处暂停。在编辑器中,断点右侧的绿色箭头表示暂停。在发生暂停的行恢复运行之前,程序不会执行该行。例如,在如图1-13、图1-14的示例中,程序会在程序执行sin(i)+cos(i)+...之前暂停。

图片 258

图1-13 实时编辑器在断点处暂停执行

图片 256

图1-14 M文件在断点处暂停执行

(4)在M文件中,MATLAB会在函数调用堆栈(位于“调试”部分中的“编辑器”选项卡上)中显示当前工作区。如果从命令行窗口使用调试函数,可使用dbstack查看函数调用堆栈。

要暂停正在运行的程序,可转到“编辑器”选项卡并单击“暂停”按钮。MATLAB会在下一个可执行代码行处暂停执行,并且“暂停”按钮会更改为“继续”按钮。要继续执行,可单击“继续”按钮。

如果想检查长时间运行的程序的进度,以确保它按预期运行,那么“暂停”按钮是很有帮助的。



注意

单击“暂停”按钮会使MATLAB在程序文件外的文件中暂停。单击“继续”按钮会继续正常执行,不更改文件结果。



当代码暂停时,可以查看或更改变量的值,或修改代码。

1.调试时查看或更改变量

在调试时查看变量的值,以查看某行代码是否生成了预期的结果。要执行此操作,应将鼠标指针放到变量的左侧。该变量的当前值将显示在数据提示中,如图1-15所示。

1-15

图1-15 在M文件中查看断点前变量的值

数据提示会一直显示在视图中,直到移动指针。如果在显示数据提示时遇到问题,应单击包含该变量的行,然后将指针靠近该变量。

在调试时,可以更改变量的值,以查看新值是否生成预期的结果。在程序暂停状态下,在命令行窗口、工作区浏览器或变量编辑器中向变量分配新值,然后继续运行或分步执行该程序。

如图1-16、图1-17所示,MATLAB在for循环(其中i=1)内暂停。

图片 271

图1-16 在M文件中查看循环中断点前变量的值

图片 272

图1-17 在实时编辑器中查看循环中断点前变量的值

在命令行窗口中键入i=4,将i的当前值从1更改为4,如图1-18、图1-19所示。

图片 276

图1-18 在M文件中更改循环中的参数值

图片 274

图1-19 在实时编辑器中更改循环中的参数值

单击“继续”按钮运行下一行代码,MATLAB将i=4赋值给第4行代码,执行完毕后继续执行i=2,如图1-20、图1-21所示。

图片 278

图1-20 在M文件中更改循环中的参数值的效果

图片 275

图1-21 在实时编辑器中更改循环中的参数值的效果

将断点设在计算值后面,在命令行窗口输入的参数将不会影响断点前面的语句;如果将断点设置在第2行或第3行代码,i=4将会影响x的值。

2.调试时修改整段代码

可以在调试时修改整段代码,用来在不保存更改的情况下测试可能的修复方式。通常最好在退出调试后修改MATLAB文件,然后保存修改并运行该文件。否则,可能导致意外结果。但是,在有些情况下,也需要在调试过程中进行试验。

要在调试时修改程序,应执行以下操作。

(1)代码暂停后,修改尚未运行的部分。

断点变为灰色,表示它们无效。

(2)选择“暂停”所在行到下一个断点所在行的所有代码,右键单击,然后在上下文菜单中选择“执行所选内容”,如图1-22所示。

代码计算完成后,停止调试,保存或撤销所做的任何更改,然后继续调试过程。

1-22

图1-22 M文件在调试中执行所选内容

调试时,可以在要检查值的断点暂停,逐步执行MATLAB文件。

表1-8介绍了可用的调试操作以及可用于执行这些操作的不同方法。

表1-8 调试操作工具栏按钮和备用函数

在发现问题后,通过转至“编辑器”选项卡并单击“退出调试”按钮来结束调试会话。如果要更改并保存文件,或者要在MATLAB中运行其他程序,必须结束调试会话。

退出调试后,编辑器屏幕中的暂停提示符将不再显示,命令行窗口中会重新显示正常提示符“>>”而非“K>>”,且无法再访问该调用堆栈。

如果MATLAB软件在断点位置暂停时变得无法响应,应按“Ctrl+C”组合键返回MATLAB提示符。