3.4 程序调试

程序调试是程序设计的重要环节,MATLAB提供了相应的程序调试功能,既可以通过文件编辑器进行调试,又可以通过命令窗口结合具体的命令进行调试。

3.4.1 命令窗口调试

MATLAB在命令窗口运行语句,或者运行M文件时,会在命令窗口提示错误信息。一般有两类错误:一类是语法错误;另一类是程序逻辑错误。

1.语法错误

语法错误一般包括文法或词法的错误,例如,表达式书写错误和函数的拼写错误等。MATLAB能够自己检查出大部分的语法错误,给出相应的错误提示信息,并标出错误在程序中的行号,通过分析MATLAB给出的错误信息,不难排除程序代码中的语法错误。例如,在命令窗口输入下面语句:

以上,MATLAB给出了错误提示,并给出了一个可能正确的表述式。

如果在M文件语句出现错误,会在命令窗口提示错误所在的行和列信息,例如:

运行文件untitled.m,结果如下:

提示是第4行、第26列鼠标所在位置是2a之间,经检查发现少了一个“∗”乘号。

2.程序逻辑错误

程序逻辑错误是指程序运行结果有错误,MATLAB系统对逻辑错误是不能检测和发现的,也不会给出任何错误提示信息。这时需要通过一些调试手段来发现程序中的逻辑错误,可以通过获取中间结果的方式来获得错误可能发生的程序段。采取的方法是:

(1)可以将程序中间的一些结果输出到命令窗口,从而确定错误的区断。命令语句后的分号去掉,就能输出语句的结果。或者用注释%,放置在一些语句前,就能忽略这些语句的作用。逐步测试,就能找到逻辑错误可能出现的程序区段了。

(2)使用MATLAB的调试菜单(Debug)调试。通过设置断点和控制程序单步运行等操作。

3.4.2 MATLAB菜单调试

MATLAB的文件编辑器除了能编辑和修改M文件之外,还能对程序菜单调试。通过调试菜单可以查看和修改函数工作空间中的变量,找到运行的错误。调试菜单提供设置断点的功能,可以使得程序运行到某一行暂停运行,可以查看工作空间中的变量值,来判断断点之前的语句逻辑是否正确。还可以通过调试菜单逐行运行程序,逐行检查和判断程序是否正确。

MATLAB调试菜单界面如图3-13所示。调试菜单界面上有“断点”选项,该选项下有4种命令:

(1)全部清除,清除所有文件中的全部断点。

(2)设置/清除,设置或清除当前行上的断点。

(3)启用/禁止,启用或者禁止当前行上的断点。

(4)设置条件,设置或修改条件断点。

在程序某行设置断点后,程序运行到该行就暂停下来,并在命令窗口显示:K>>,可以在K>>后输入变量名,就能显示变量的值,从而可以分析和检查前面的程序是否正确。然后可以单击调试菜单的“继续”选项,在下个断点处暂停,这时又可以输入变量名,检查变量的值。如此重复,直到发现程序问题为止。

图3-13 调试菜单界面

3.4.3 MATLAB调试函数

MATLAB调试程序还可以利用调试函数,如表3-1所示。

表3-1 MATLAB常用调试函数

表3-1中的各调试函数的功能和作用和菜单调试用法类似,具体使用方法可以用MATLAB的帮助命令help查询。