使用Matlab调试器在函数中发生错误时跳出调用者

时间:2012-10-26 20:27:09

标签: debugging matlab

我的Matlab代码看起来像这样:

for t = 1:T
   arg = (do some calculation)
   func(arg)
end

我知道循环中的计算有问题导致func正文内部出错。但是如果我将调试器设置为在错误上停止,它将在func的主体内停止。我真正需要的是走出func并进入for循环,看看哪个计算出错了。 T是一个巨大的数字,所以手动单步不是一个选项。我也无法将t传递给func,因为整段代码都是只读的。有没有办法让调试器在发生错误时从func退出?

2 个答案:

答案 0 :(得分:2)

一旦你的函数在调试器中停止,你就可以切换堆栈的一个(或几个)级别,以便检查调用函数中出了什么问题。

最简单的方法可能是通过GUI,您可以使用下拉菜单在工作区之间切换,但也可以在命令行上使用DBUP

R2012a及更早版本: enter image description here

R2012b及更高版本: enter image description here

答案 1 :(得分:1)

尝试使用try

for t = 1:T
   arg = (do some calculation)
   try
       func(arg)
   catch
       z = 1;
   end
end

然后只需在z = 1;行上设置调试点。当func中的错误跳闸时,程序将跳转到z = 1;行,您的调试点将暂停,并允许您检查工作区。完成!