我目前正在使用嵌套的try-catch语句调试代码。
我可以使用dbstop
命令轻松处理错误,但每次查看代码并希望停止运行程序时,我必须为每个嵌套级别输入dbquit
一次。< / p>
由于这非常烦人,我正在寻找一个解决方案,一旦我完成调试就真的停止调试所有程序。
以下是我如何调用代码的示例:
dbstop if error
dbstop if caught error
mytestmain
以下是函数的外观示例(子函数可能在或不在不同的.m文件中)
function mytestmain
try
mytestsub
catch
end
%% Definition of subfunction
function mytestsub
try
a=b;%generate an error as b is not defined
catch
end
我尝试了什么?
dbquit
的脚本或函数,但这只会执行dbquit
一次。dbquit('all')
,但没有效果请注意,我不想删除代码中的try-catch语句。
答案 0 :(得分:2)
您可以在使用dbclear
dbquit
dbclear all; dbquit;
但请注意,这也将清除您手动设置的所有断点,因此,如果您另外使用断点,则应该使用
dbclear if error; dbclear if caught error; dbquit;
答案 1 :(得分:1)
这不是它应该如何工作的。无论您的try / catch语句嵌套的程度如何以及仍然设置了哪些断点,单个dbquit
都应该让您完全脱离调试器。
你在运行旧版本的Matlab吗?在RAP9b之前版本的Matlab中有一个known bug related to dbstop if caught error
听起来可能会导致这种行为。如果您使用的是旧版本,则可以升级。
无论您的版本如何,请尝试执行dbstop if all error
而不是单独的dbstop if error
和dbstop if caught error
语句,并查看行为是否发生变化。
我也猜想你可能正在“K&gt;&gt;”中运行多个功能提示并以嵌套的调试器会话结束,但您所做的dbquit('all')
应该处理这种情况。