多くの場合、コードをデバッグするために多くのkeyboard
コマンドを挿入します。しかし、もう少し柔軟性を持たせたいと思います。だからこそ私はstahp
の機能を書いています。ファイルから抜け出した後にMATLABデバッグモードを開始
function stahp()
disp('Stahp requested.');
dbstack
disp('You can either');
disp(' 1 abort.');
disp(' 2 continue.');
disp(' 3 debug.');
in = input('Choose what to do:\n');
switch(in)
case 1
error('Stahp.');
case 2
disp('Continue.')
case 3
disp('Debug.');
keyboard % <------------------------------------ Here is my problem
otherwise
stahp();
end
end
アイデアは、彼が(将来的には他の何か多分、デバッグ、中止、継続)何をしたいのか、ユーザーが選択できるように、です。しかし、私はstahp
関数の中でデバッグモードを開始しないことをお勧めします。例については、
function test_stahp
a = 1
stahp()
b = 2
end
を実行している私は、右のb=2
前にデバッグモードに入りたいと思います。私は、dbstep out
は何とか使うことができると思いますが、これまでに試したやり方では、手動でstahp()
から手を離さなければなりません。また、stahp()
の再帰呼び出しがotherwise
にあると複雑になる可能性がありますが、その部分を削除することもできます。
ご協力いただきありがとうございます。ありがとうございました。
この方法には1つの問題があります。 'debug'を選択すると、明示的に次の行にブレークポイントが置かれます。しかし、コードを再実行して「続行」を選択すると、もともと置かれたブレークポイントで停止します。 – k1next
それを指摘してくれてありがとう。一つのオプションは 'dbclear'を使ってブレークポイントをクリアすることです。私はブレークポイント(もしあれば)を削除するように私の既存の答えを更新しました。 – mkfin
ありがとう、しかし、今、 'stahp'は自己完結型ではありません。私は 'stahp'を追加するたびに' dbclear'を追加したくないです。 – k1next