15

対応する関数ファイルにブレークポイントを保持しながら、MATLAB 関数のすべての永続変数をクリアする方法はありますか?

clear all;

clear functions;

どちらもブレークポイントを殺します。

4

6 に答える 6

15

残念ながら、永続変数をクリアするとブレークポイントもクリアされますが、回避策があります。

保持するブレークポイントを設定したら、dbstatus関数を使用してそれらのブレークポイントを含む構造体を取得し、その構造体を MAT ファイルに保存します。変数をクリアした後、MAT ファイルを読み込んで dbstop を使用することにより、これらの変数を再度読み込むことができます。以下は、この一連の操作を実行する例です。

s=dbstatus;
save('myBreakpoints.mat', 's');
clear all
load('myBreakpoints.mat');
dbstop(s);
于 2010-03-25T11:34:26.473 に答える
10

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にあります。

于 2011-04-12T23:21:28.163 に答える
3

@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')
于 2010-03-25T16:53:15.353 に答える
1
s=dbstatus; % keep breakpoints
evalin('base','clear classes')
dbstop(s);

関数ファイルにコピーする (myclearclasses の例) この方法では、一時的な .mat ファイルは必要ありません。

于 2013-02-05T13:48:01.947 に答える
0

設定と他の人の回答を使用して、これに対する簡単な解決策を思いつきました。

setpref('user', 'breakpointBackup', dbstatus('-completenames'));
clear all;
clear import;
clear java;
dbstop(getpref('user', 'breakpointBackup'));

このアプローチの利点は、非常にクリーン (つまり、一時ファイルがない) であり、すべてがクリアされることです。

于 2015-05-13T17:56:36.687 に答える