我正在尝试在 MATLAB R2011b 中调试我自己没有编写的面向对象的应用程序。为此,我想在classdef
. 据我所知,这是允许的。然而,当我运行应用程序时,断点神秘地消失了。
我已经clear
像这样配置了一个断点:
dbstop in clear
查看何时clear
被调用。在运行应用程序之前,我使用 dbstatus 检查断点是否存在:
>> dbstatus
Breakpoint for Processor>Processor.setResult is on line 114.
Breakpoint for inputCompute is on line 30.
Breakpoint is set for m_interpreter>clear.
(有问题的断点是列表中的第一个。)当我运行应用程序时,classdef 中的断点在调用第一个 clear 之前消失了:
>> rootFunction('configuration')
417 clear('Data');
K>> dbstatus
Breakpoint for inputCompute is on line 30.
Breakpoint is set for m_interpreter>clear.
为了确定断点被清除的位置,我逐渐将断点移动到越来越接近根函数的开头,并找到了有问题的代码行:
cd('./configs');
果然 - 任何调用cd
,即使是间接调用,都会清除classdef
. 这意味着它run
做的事情完全相同。这是令人愤怒的行为。为什么 MATLAB 会这样做?我怎样才能让它不这样做?