3.8.1 MATLAB程序调试方法和过程(2)
2.调试工具
MATLAB提供了大量的调试函数供用户使用,这些函数可以通过help指令获得,在MATLAB命令执行窗口输入如下指令:>>help debug
用户便可获得这些函数,这些函数都有一个特点,就是以"db"开头,具体功能和作用如下:dbstop - Set breakpoint %设置断点
dbclear - Remove breakpoint %清除断点
dbcont - Resume execution %重新执行
dbdown - Change local workspace context %下移本地工作空间内容
dbmex - Enable MEX-file debugging %使MEX文件调试有效
dbstack - List who called whom %列出函数调用关系
dbstatus - List all breakpoints %列出所有断点
dbstep - Execute one or more lines %单步或多步执行
dbtype - List M-file with line numbers %列出M文件
dbup - Change local workspace context %上移本地工作空间内容
dbquit - Quit debug mode %退出调试模式
在MATLAB中,这些调试函数都有相应的图形化调试工具,使得程序的调试更加方便、快捷。这些图形化调试工具在MATLAB编译器的"debug"和"Breakpoints"菜单中,以方便调试使用。
3.调试方法
对于简单的MATLAB程序中出现的语法错误,可以采用直接调试法,即直接运行该M文件,MATLAB将直接找出语法错误的类型和出现的地方,根据MATLAB的反馈信息对语法错误进行修改。
当M文件很大或M文件中含有复杂的嵌套时,则需要使用MATLAB调试器来对程序进行调试,即使用MATLAB提供的大量调试函数以及与之相对应的图形化工具。
下面通过一个判断2000年至2010年间的闰年年份的示例来介绍MATLAB调试器的使用方法。
(1)创建一个leapyear.m的M函数文件,并输入如下函数代码程序。%程序为判断2000年至2010年10年间的闰年年份
%本程序没有输入/输出变量
%函数的使用格式为leapyear,输出结果为2000年至2010年10年间的闰年年份
function leapyear %定义函数leapyear
foryear=2000:2010 %定义循环区间
sign=1;
a=rem(year,100); %求year除以100后的剩余数
b=rem(year,4); %求year除以4后的剩余数
c=rem(year,400); %求year除以400后的剩余数
ifa=0%以下根据a、b、c是否为0对标志变量sign进行处理
signsign=sign-1;
end
ifb=0
signsign=sign+1;
end
ifc=0
signsign=sign+1;
end
ifsign=1
fprintf('%4d \n',year)
end
end
(2)运行以上M程序,此时MATLAB命令窗口会给出如下错误提示: ??? Error: File: leapyear.m Line: 10 Column: 6
The expression to the left of the equals sign is not a valid target for an assignment.
由错误提示可知,在程序的第10行存在语法错误,检测可知if选择判断语句中,用户将"=="写成了"="。因此将"="改成"==",同时也更改第13、16、19行中的"="为"=="。
【责任编辑:book TEL:(010)68476606】
点赞 0