如何在MATLAB中保留断点的同时清除持久变量?

Phi*_*ipp 15 matlab persistent

有没有办法清除MATLAB函数中的所有持久变量,同时将断点保留在相应的函数文件中?

clear all;
Run Code Online (Sandbox Code Playgroud)

clear functions;
Run Code Online (Sandbox Code Playgroud)

都杀了断点.

RTB*_*ard 15

不幸的是,清除持久变量也会清除断点,但有一种解决方法.

设置要保留的断点后,使用该dbstatus函数获取包含这些断点的结构,然后将该结构保存到MAT文件中.清除变量后,可以通过加载MAT文件并使用dbstop重新加载这些变量.以下是执行此操作序列的示例:

s=dbstatus;
save('myBreakpoints.mat', 's');
clear all
load('myBreakpoints.mat');
dbstop(s);
Run Code Online (Sandbox Code Playgroud)

  • 问题是**为什么他们决定删除断点,因为`clear all`被调用?他们决定这一点时他们的想法是什么.我真的不明白.. (2认同)

Bra*_*don 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;
Run Code Online (Sandbox Code Playgroud)

这个脚本和其他一些Matlab实用程序在这里是Github .