3

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

4

2 に答える 2

1

クラスが現在のディレクトリにあるためにパス上にのみある場合、コードの実行中に現在のディレクトリを変更すると、ブレークポイントのクリアなど、予期しない結果が生じる可能性があります。

[パスの設定] ダイアログまたはaddpath関数を使用して、コードのディレクトリを MATLAB パスに追加します。これにより、現在のディレクトリを変更しても MATLAB からアクセスできるようになり、デバッグの問題が解決されます。

于 2013-07-30T17:20:40.930 に答える