1

我正在使用GNU octave 3.6.4. 根据变更日志(v 3.2)

现在可以使用 dbup 和 dbdown 上下移动调用堆栈。

但是,当我处于调试模式并执行dbup后跟 时dbnext,将执行下部框架中的下一行。为什么会这样?如何避免?

octave -q
 octave:1> myfunc_base(2,3)
 stopped in /home/seb/octave/myfunc.m at line 5
 5:   keyboard
 debug> dbstack
 stopped in:
   -->      myfunc at line 5 [/home/seb/octave/myfunc.m]
            myfunc_base at line 4 [/home/seb/octave/myfunc_base.m]
 debug> dbup
 stopped in myfunc_base at line 4 % <-- looks good!
 debug> dbnext
 stopped in /home/seb/octave/myfunc.m at line 6 % <-- damn this is the old frame!
 6:   sp = a + temp;
 debug> 

两个测试功能:

myfunc.m

function sp = myfunc (a, b, c)

  temp = b+c;
  keyboard
  sp = a + temp;

end 

myfunc_base.m

function sp = myfunc_base (aa, bb)

  temp = myfunc(aa, aa, bb);
  sp = aa + temp;

end 
4

1 回答 1

1

要退出,您必须使用dbstep out. 这与 matlab 的行为相匹配,其他一切都会非常奇怪。如果发生异常,您不能在堆栈的任何级别上跳到下一行。

于 2013-11-13T11:36:42.900 回答