相见恨晚的Matlab编程小技巧(1)-子函数报错怎么调试?——dbstop if error

在MATLAB编程时,如果遇到因变量维度不匹配等错误,通常需要设置断点逐步调试。文章介绍了使用dbstopiferror命令可以在程序出错时自动暂停,简化调试流程,尤其适用于处理复杂计算和大量变量的情况。此外,还提到了dbstop函数的其他用法,包括条件断点和在特定条件出现时暂停执行的功能。
摘要由CSDN通过智能技术生成

        相信在matlab调试程序的时候都遇到过这种情况:运行程序时命令行报错,而且出错的位置在我们自己定义的函数里,比如下面这个例子:

主函数main.m:

a=[1 2 3];
b=[4 5];
c=sum_squares(a,b);

子函数sum_squares.m

function c=sum_squares(a,b)
    c=a.^2+b.^2;
end

我们运行主函数,显然会因为维度不匹配报错:

        我举得例子非常简单,一眼就可以看出来问题在哪。但是如果变量很多,计算公式很复杂,我们也不知道具体是哪些变量维度不匹配,这时候一般的做法就是在子函数报错的对应行设置断点,重新运行主函数,再来找出具体问题。 如果程序运行时间比较长,一来二去这样就要消耗大量的时间。有没有啥简单的办法呢?当然是有的,在程序运行前加上dbstop if error,这样matlab就会在发生错误的位置暂停,直接可以省去第二次调试的步骤了。

dbstop if error
a=[1 2 3];
b=[4 5];
c=sum_squares(a,b);

        把主函数改成这样,然后运行,直接就会在报错的代码行暂停,调试起来就很方便了:

         dbstop函数还有其他的用法,具体可以查看官方文档:

dbstop

设置断点用于调试

语法

dbstop in file

dbstop in file at location

dbstop in file if expression

dbstop in file at location if expression

dbstop if condition

dbstop(b)

说明

dbstop in file 在 file 中的第一个可执行代码行位置设置断点。当您运行 file 时,MATLAB® 进入调试模式,在断点处暂停执行并显示暂停位置对应的行。

dbstop in file at location 在指定位置设置断点。MATLAB 执行会在到达该位置之前立即暂停,除非该位置处是一个匿名函数。如果该位置处是匿名函数,则执行将在断点之后立即暂停。

dbstop in file if expression 在文件的第一个可执行代码行位置设置条件断点。仅在 expression 的计算结果为 true (1) 时暂停执行。

dbstop in file at location if expression 在指定位置设置条件断点。仅在 expression 计算结果为 true 时,于该位置处或该位置前暂停执行。

dbstop if condition 在满足指定的 condition(如 error 或 naninf)的行位置处暂停执行。与其他断点不同,您不在特定文件中的特定行设置此断点。MATLAB 会在发生指定的 condition 时在任何文件的任何行暂停执行。

dbstop(b) 用于恢复您之前保存到 b 的断点。包含保存的断点的文件必须位于搜索路径中或当前文件夹中。MATLAB 按行号分配断点;因此,文件中的行数必须与保存断点时的行数相同。

dbstop官方使用文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

配电网和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值