2010-03-25 16 views

Trả lời

15

Thật không may, việc xóa các biến cố định cũng xóa các điểm ngắt, nhưng có một cách giải quyết khác.

Sau khi thiết lập các điểm ngắt bạn muốn giữ lại, hãy sử dụng hàm dbstatus để lấy cấu trúc chứa các điểm ngắt đó và sau đó lưu cấu trúc đó vào tệp MAT. Sau khi xóa các biến, bạn có thể tải lại các biến đó bằng cách tải tệp MAT và sử dụng dbstop. Sau đây là một ví dụ về thực hiện trình tự này hoạt động:

s=dbstatus; 
save('myBreakpoints.mat', 's'); 
clear all 
load('myBreakpoints.mat'); 
dbstop(s); 
+1

Lưu ý rằng cho đến khi Matlab 2009b (tôi nghĩ), nơi chúng sửa lỗi, các điểm ngắt được nạp sẽ không hiển thị trong trình chỉnh sửa - nhưng chúng ở đó. – Jonas

+0

@RTBarnard cảm ơn giải pháp đó. Thật không may nó không hoạt động trong các lớp @ -folder vì các tệp có các điểm ngắt, phải nằm trên đường dẫn tìm kiếm, từ đó @ -folders bị loại trừ. – Philipp

+0

@Jonas R2009b của tôi vẫn có lỗi – Philipp

3

Nếu có dữ liệu trong @directories, bạn vẫn có thể sử dụng phương pháp đó RTBarnard đề xuất

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') 
10

xây dựng từ RTBarnard và Jonas của giải pháp, tôi đã đưa ra một tập lệnh tránh nhu cầu lưu và tải từ một tệp. Lưu ý, tuy nhiên, điều này không rõ ràng các lớp học như giải pháp của Jonas. Tôi cũng đóng tất cả các con số, vì đó là những gì tôi thường muốn làm khi thanh toán bù trừ tất cả mọi thứ. Dưới đây là:

% 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; 

Tập lệnh này và một số tiện ích Matlab khác nằm trên Github here.

+0

Tốt hơn nhiều để giữ các điểm ngắt trong bộ nhớ thay vì viết một tập tin. – Philipp

+0

Đây sẽ là câu trả lời ưa thích của tôi. Cảm ơn bạn cho kịch bản! –

+0

@ndj Không sao cả. Tôi vẫn sử dụng kịch bản này tất cả thời gian khi làm việc trong Matlab.Chỉ một trong những khác tôi đã viết mà đến gần trong tính hữu dụng là một trong đó xuất khẩu con số để vector tập tin pdf với một kích thước quy định và với tất cả các không gian trắng thêm cắt. Và điều đó chỉ hữu ích vì tôi sử dụng LaTeX rất nhiều. – Brandon

1
s=dbstatus; % keep breakpoints 
evalin('base','clear classes') 
dbstop(s); 

Để được sao chép trong tệp chức năng (ví dụ myclearclasses) Cách này không cần tệp .mat tạm thời.

0

Thật đơn giản, bạn nên sử dụng * làm regexp để tìm tất cả các biến. Nó sẽ làm sạch toàn bộ không gian làm việc và các điểm ngắt sẽ tồn tại.

clear *; 
0

tôi đã đưa ra một giải pháp nhanh chóng cho điều này bằng preferences và câu trả lời của những người khác:

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

Ưu điểm của phương pháp này là nó rất sạch (tức là không có tập tin tạm thời) và xóa tất cả mọi thứ.

Các vấn đề liên quan