MATLAB工具调试法:以命令行为主的调试
(1)设置断点
设置断点的函数dbstop调用语法如下。
·dbstop in mfile:在文件名为mfile的M文件第一个可执行语句前设断点,此时用户可以应用各种调试工具,查看工作空间变量,或公布任何有效的MATLAB函数。
·dbstop in mfile at lineno:在mfile的第lineno行设断点。
·dbstop in mfile at subfun:当程序执行到子程序subfun时,暂时中止执行,并设断点。
·dbstop if error:遇到错误时,终止M文件运行,并停在错误行(不包括try...catch语句中检测到的错误,不能在错误后重新开始运行)。
·dbstop if all error:与dbstop if error命令相同。但是它遇到任何类型错误均停止(包括try...catch语句中检测到的的错误)。
·dbstop if warning:遇到运行警告时,终止M文件运行,但其程序可恢复运行。
·dbstop if caught error:当try...catch检测到运行时间错误时,停止M文件执行,可恢复运行。
·dbstop if naninf 或 dbstop if infnan:运行任何M文件遇到无穷值(Inf)或非数值(NaN)时,就会终止M文件运行。
(2)断点清除
清除断点的函数dbclear调用语法如下。
·dbclear all:清除所有M文件中的所有断点。
·dbclear all in mfile:清除文件名为mfile的文件中的所有断点。
·dbclear in mfile:清除文件名为mfile中第一个可执行语句前的断点。
·dbclear in mfile at lineno:清除文件名为mfile中行号为lineno语句前的断点。
·dbclear in mfile at subfun:清除文件名为mfile中子函数subfun语句前的断点。
·dbclear if error/warning/naninf/infnan:清除由这些命令设置的暂停设置。
(3)恢复运行
恢复执行的函数dbcont调用语法如下。
Dbcount:从断点处恢复程序的执行,直到下一个断点或错误后返回MATLAB基本工作空间。
(4)调用堆栈
调用堆栈函数dbstack调用语法如下。
dbstack:显示行数和函数调用的M文件名,它们是根据运行的先后次序列出的。最近执行的函数紧随调用它的函数优先列出。
(5)列出所有断点
列出所有断点的函数dbstatus调用语法如下。
dbstatus:列出所有有效断点。
s=dbstatus(…):返回值为M×I的结构体形式返回断点信息。
其中:
·Name——函数名;
·Line——断点行向量;
·xpression_r——与line中相对应的断点条件表达字符串;
·cond——条件字符串,如error、caughterror、warning或naninf;
·identifier——当条件字符串是error、caughterror、warning或naninf时,该字段是MATLAB的信息指示字符串。
dbstatus mfile:列出指定M文件中所有断点设置,mfile必须为M文件函数或有效路径。
(6)执行一行或多行语句
执行一行或多行语句的函数dbstep调用语法如下。
·dbstep:执行下一个可执行语句。
·dbstep nlines:执行下nlines行可执行语句。
·dbstep in:执行下一行可执行语句,如有子函数,进入执行。
·dbstep out:执行函数剩余部分,离开函数时停止。
注意:四种都返回调试模式,如果遇到断点,中止程序执行。
(7)列出文件内容
列出文件内容的函数dbtype调用语法如下。
·dbtype mfile:列出mfile文件的内容,并在每行语句前加上标号以方便使用者设定断点。
·dbtype mfile start:end:列出mfile文件中指定行号范围的部分。
注意:在UNIX和VMS调试模式下,并不显示MATLAB的调试器,此时必须使用dbtype来显示源程序代码。
(8)切换工作空间
切换工作空间的函数dbdown和函数dbup调用语法如下。
·dbdown:遇到断点时,将当前工作空间切换到被调用的M文件的空间。
·dbup:将当前工作空间切换到调用的M文件的空间。
(9)退出调试模式
退出调试模式的函数dbquit调用语法如下。
dbquit:立刻结束调试器并返回基本工作空间,所有断点仍然有效。
除了命令调试以外,在MATLAB中,这些调试函数都有相应的图形化调试工具,使得程序的调试更加方便、快捷。这些图形化调试工具在MATLAB编译器的debug和Breakpoints菜单中,以方便调试使用。