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

関数がデバッガーで停止したら、呼び出し元の関数で何が問題になったかを確認するために、スタックの1つ(または複数)のレベルを切り替えることができます。

これを行う最も簡単な方法は、おそらく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 に答える