0

我的 Matlab 代码如下所示:

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

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

4

2 回答 2

2

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

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

R2012a 及更早版本: 在此处输入图像描述

R2012b 及更高版本: 在此处输入图像描述

于 2012-10-26T21:53:51.557 回答
1

尝试使用try

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

然后只需设置你的调试点就行了z = 1;。当错误发生时func,程序将跳转到该z = 1;行,您的调试点将停止运行并允许您检查工作区。完毕!

于 2012-10-26T20:30:15.893 回答