対応する関数ファイルにブレークポイントを保持しながら、MATLAB 関数のすべての永続変数をクリアする方法はありますか?
clear all;
と
clear functions;
どちらもブレークポイントを殺します。
対応する関数ファイルにブレークポイントを保持しながら、MATLAB 関数のすべての永続変数をクリアする方法はありますか?
clear all;
と
clear functions;
どちらもブレークポイントを殺します。
残念ながら、永続変数をクリアするとブレークポイントもクリアされますが、回避策があります。
保持するブレークポイントを設定したら、dbstatus
関数を使用してそれらのブレークポイントを含む構造体を取得し、その構造体を MAT ファイルに保存します。変数をクリアした後、MAT ファイルを読み込んで dbstop を使用することにより、これらの変数を再度読み込むことができます。以下は、この一連の操作を実行する例です。
s=dbstatus;
save('myBreakpoints.mat', 's');
clear all
load('myBreakpoints.mat');
dbstop(s);
RTBarnard と Jonas のソリューションを基に、ファイルを保存して読み込む必要のないスクリプトを思いつきました。ただし、これは Jonas のソリューションのようにクラスをクリアしないことに注意してください。また、すべてをクリアするときに通常やりたいことなので、すべての図を閉じます。ここにあります:
% Close all figures including those with hidden handles
close all hidden;
% Store all the currently set breakpoints in a variable
temporaryBreakpointData=dbstatus('-completenames');
% Clear functions and their persistent variables (also clears breakpoints
% set in functions)
clear functions;
% Restore the previously set breakpoints
dbstop(temporaryBreakpointData);
% Clear global variables
clear global;
% Clear variables (including the temporary one used to store breakpoints)
clear variables;
このスクリプトとその他のいくつかの Matlab ユーティリティは、Github hereにあります。
@directories にデータがある場合でも、RTBarnardが提案する方法を使用できます。
s=dbstatus('-completenames');
save('myBreakpoints.mat','s');
%# if you're clearing, you may as well just clear everything
%# note that if there is stuff stored inside figures (e.g. as callbacks), not all of
%# it may be removed, so you may have to 'close all' as well
clear classes
load('myBreakpoints.mat')
dbstop(s);
%# do some cleanup
clear s
delete('myBreakpoints.mat')
s=dbstatus; % keep breakpoints
evalin('base','clear classes')
dbstop(s);
関数ファイルにコピーする (myclearclasses の例) この方法では、一時的な .mat ファイルは必要ありません。
設定と他の人の回答を使用して、これに対する簡単な解決策を思いつきました。
setpref('user', 'breakpointBackup', dbstatus('-completenames'));
clear all;
clear import;
clear java;
dbstop(getpref('user', 'breakpointBackup'));
このアプローチの利点は、非常にクリーン (つまり、一時ファイルがない) であり、すべてがクリアされることです。