Matlab的调试总体分为,直接调试和间接调试。
1.直接调试:
(1)去掉句末的分号;
(2)单独调试一个函数:将第一行的函数声明注释掉,并定义输入量,以脚本方式执行 M 文件;
(3)适当地方添加输出变量值的语句;
(4)添加keyboard命令;
pause命令
以下为该命令的用法
pause命令用于暂时中止程序的运行。当程序运行到此命令时,程序暂时中止,然后等待用户按任意键继续进行。该命令在程序的调试过程和用户需要查询中间结果时十分有用。调用格式:
pause:导致M文件的停止,等待用户按任意键继续运行
pause(n):此用法将在继续执行前中止执行程序n秒,这里n可以是任意实数。时钟的精度是由MATLAB的工作平台所决定的,绝大多数工作平台都支持0.01秒的时间间隔。
pause on:此用法将允许后续的pause命令中止程序的运行。
pause off:此用法将保证后续的任何pause或pause(n)语句都不中止程序的运行。
2.工具调试:
1.)以命令行为主的调试:
(1)设置断点:
· dbstop in mfile:在文件名为mfile的M文件第一个可执行语句前设断点;
· dbstop in mfile at lineno:在mfile的第lineno行设断点;
· dbstop in mfile at subfun:当程序执行到子程序subfun时,暂时中止执行,并设断点;
· dbstop if error:遇到错误时,终止M文件运行,并停在错误行(不包括try...catch语句中检测到的的错误,不能在错误后重新开始运行);
· dbstop if all error:遇到任何类型错误均停止(包括try...catch语句中检测到的的错误);
· dbstop if warning:程序可恢复运行;
· dbstop if caught error:当try...catch检测到运行时间错误是,停止M文件执行,可恢复运行;
· dbstop if naninf 或 dbstop if infnan
(2)断点清除:
· dbclear all:清除所有M文件中的所有断点;
· dbclear all in mfile:清除文件名为mfile的文件中的所有断点;
· dbclear in mfile:清除文件名为mfile中第一个可执行语句前的断点;
· dbclear in mfile at lineno:
· dbclear in mfile at subfun:
· dbclear iferror/warning/naninf/infnan:
(3)恢复运行:
· dbcount:从断点处恢复程序的执行,直到下一个断点或错误后返回Matlab基本工作空间;
(4)调用堆栈:
· dbstack:
· 1.)dbstack(N)
· 2.)dbstack('-completenames')
(5)列出所有断点:
· dbstatus
s=dbstatus:返回值为M×1结构体
其中字段:
name-函数名;
line-断点行向量;
expression_r-与line中相对应的断点条件表达字符串;
cond-条件字符串,如error,caughterror,warning,或naninf;
identifier-当条件字符串是error,caught error,warning,或naninf时,改字段是Matlab的
信息指示字符串;
·
dbstatusmfile:列车制定M文件中所有断点设置,mfile必须为M文件函数或有效路径;
(6)执行一行或多行语句:
· dbstep:执行下一个可执行语句;
· dbstep nlines:执行下nlines行可执行语句;
· dbstep in:执行下一行可执行语句,如有子函数,进入;
· dbstep out:执行函数剩余部分,离开函数时停止;
· 注:这四种都返回调试模式,如遇断点,中止;
(7)列出文件内容:
· dbtype mfile:列出mfile文件的内容,并在每行语句前加上标号以方便使用者设定断点;
· dbtype mfile start:end:列出mfile文件中指定行号范围的部分
· 注:在UNIX和VMS调试模式下,并不现实Matlab的调试器,此时必须使用dbtype来显示源程序代码;
(8)切换工作空间:
· dbdown:遇到断点时,将当前工作空间切换到被调用的M文件的空间;
· dbup:将当前工作空间切换到调用的M文件的空间;
(9)退出调试模式:
· dbquit;