我的Matlab代码看起来像这样:
for t = 1:T
arg = (do some calculation)
func(arg)
end
我知道循环中的计算有问题导致func
正文内部出错。但是如果我将调试器设置为在错误上停止,它将在func
的主体内停止。我真正需要的是走出func
并进入for循环,看看哪个计算出错了。 T是一个巨大的数字,所以手动单步不是一个选项。我也无法将t
传递给func
,因为整段代码都是只读的。有没有办法让调试器在发生错误时从func
退出?
答案 0 :(得分:2)
一旦你的函数在调试器中停止,你就可以切换堆栈的一个(或几个)级别,以便检查调用函数中出了什么问题。
最简单的方法可能是通过GUI,您可以使用下拉菜单在工作区之间切换,但也可以在命令行上使用DBUP。
R2012a及更早版本:
R2012b及更高版本:
答案 1 :(得分:1)
尝试使用try
:
for t = 1:T
arg = (do some calculation)
try
func(arg)
catch
z = 1;
end
end
然后只需在z = 1;
行上设置调试点。当func
中的错误跳闸时,程序将跳转到z = 1;
行,您的调试点将暂停,并允许您检查工作区。完成!