dbstop if error not working

21 Ansichten (letzte 30 Tage)
Dylan
Dylan am 24 Okt. 2023
Kommentiert: Walter Roberson am 25 Okt. 2023
I would like matlab to enter debug mode when there is an error by calling dbstop if error, but it's not working.
In the following code for example, Matlab errors as expected but it doesn't enter debug mode. Are there any settings I should check? I don't see a debug menu.
dbstop if error
ferror123()
function ferror123() % this function errors
x = [];
x(4);
end
  2 Kommentare
Matt J
Matt J am 24 Okt. 2023
What happens if you use the Pause On Errors menu option instead of dbstop?
Dylan
Dylan am 24 Okt. 2023
That option doesn't seem to have any effect

Melden Sie sich an, um zu kommentieren.

Antworten (2)

the cyclist
the cyclist am 24 Okt. 2023
ferror is the name of a built-in MATLAB function (which the debugger cannot open into). I expect it is being called, rather than your function.
Try renaming your function, and I expect the debugger will be triggered.
  8 Kommentare
Dylan
Dylan am 24 Okt. 2023
Ok I see. And just to confirm dbstop if caught error is expected to work in cell mode? That does enter debug mode for me when I do cmd + enter.
Walter Roberson
Walter Roberson am 25 Okt. 2023
Yes, dbstop if caught error is expected to work in cell mode -- but any line numbers reported might look strange.

Melden Sie sich an, um zu kommentieren.


Walter Roberson
Walter Roberson am 24 Okt. 2023
if you are within a try/catch then use
dbstop if caught error
  3 Kommentare
Walter Roberson
Walter Roberson am 24 Okt. 2023
dbstop if error is only for unhandled errors when no try/catch is in effect.
dbstop if caught error is for all error cases... including "expected" errors.
What I mean by expected errors is that in order to deal with compatibility issues or with the possibility of hardware that might or might not be present, it is not uncommon for internal routines to use try/catch protecting a statement that is needed if conditions are right but can be skipped if they are not right.
As an example sometimes it is easier to code
try
delete(OldObject);
catch ME
end
rather than to code testing to see if OldObject exists and is in a deletable state
Dylan
Dylan am 24 Okt. 2023
Thanks.
Any reason why dbstop if caught error would work and not dbstop if error?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Debugging and Analysis finden Sie in Help Center und File Exchange

Produkte


Version

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by