自分で作成したのではないオブジェクト指向アプリケーションを 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 のブレークポイントが消えます。
>> 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 はこれを行うのでしょうか? これを行わないようにするにはどうすればよいですか?