Aktualnie debuguję kod za pomocą zagnieżdżonych instrukcji catch-try.Escape from nested try - catch statement
Z łatwością mogę poradzić sobie z błędami za pomocą polecenia dbstop
, ale za każdym razem, gdy patrzę na kod i chcę przestać go uruchamiać, muszę raz wprowadzić dbquit
dla każdego poziomu zagnieżdżenia.
Ponieważ jest to dość irytujące, szukam rozwiązania, które naprawdę przestanie debugować wszystkie programy po zakończeniu debugowania.
Oto przykład, jak nazywam Kod:
dbstop if error
dbstop if caught error
mytestmain
I tu jest przykładem tego, co funkcja może wyglądać (podfunkcję mogą lub nie mogą być w innym pliku .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
Czego próbowałem?
- Próbowałem za pomocą skryptu lub funkcji, która wywołuje
dbquit
dwukrotnie, jednak będzie to tylko wykonaćdbquit
raz. - Próbowałem za pomocą
dbquit('all')
, ale bez efektu
pamiętać, że nie wolą usunąć sprawozdania try-catch w kodzie.
To zachowanie jest zaskakujące; 'dbquit' powinno ci wydostać się z debuggera i wykonać kod, niezależnie od tego, jak głęboko zagnieżdżone są twoje try/catch. Robię to często z głęboko zagnieżdżonymi try/catch. W jakiej wersji Matlaba pracujesz? –