MATLAB Answers

Knut
1

Feature request: Breakpoint stop on errors in non Mathworks code

Asked by Knut
on 7 Jan 2016
Latest activity Commented on by Walter Roberson
on 8 Jan 2016
I like to use the "stop on errors" function. This allows me to run and test my stuff, and whenever some error occurs, I have instantly access to inspect variables and figuring out what went wrong.
But whenever my code calls functions written by Mathworks, I get a more or less deep breakpoint into code that I did not write and do not care about. Also, my editor fills up with irrelevant files.
Would it be possible to break execution at the latest "user contributed file" (i.e. trace the call-stack backwards until such a file is found) while displaying the error message in the Command window?
Also, if this setting could be persistent from Matlab session to session, it would be greatly appreciated. Thank you.
-k

  2 Comments

"my editor fills up with irrelevant files"... you don't need to open every file that is listed in the error message. Just read through the message, and focus on the parts that mention your functions.
dbstop on error automatically opens the deepest .m code that it can if you are running the MATLAB Desktop (which is most people.) This can be a nuisance.

Sign in to comment.

4 Answers

Answer by Ilham Hardy on 7 Jan 2016

As far as I can remember, you can trace the stack based on the scary red text on matlab command window (when error took place).
You can click the underlined part of the text on the "user contributed file", to focus on the specific line that caused the error.

  0 Comments

Sign in to comment.


Answer by Walter Roberson
on 7 Jan 2016

At the moment about all you can do is to go into Preferences -> Editor/Debugger and turn off "Automatically open files when MATLAB reaches a breakpoint".
I know this is not what you are asking for.

  0 Comments

Sign in to comment.


Answer by Image Analyst
on 8 Jan 2016

On the Editor tab/tool ribbon, when it stops, you should see a "Function call stack" drop down list. You can drop that down, then find the first function you recognize (the one you wrote) and select it to go there. Then quit debugging and set a break point there. Next time it will stop there.

  1 Comment

For example, in my function portrait_landscape_OpeningFcn():

Sign in to comment.


Answer by Knut
on 8 Jan 2016
Edited by Knut
on 8 Jan 2016

I am aware of the call stack and the link in the error message. What I requested was slightly different though. Let me try to explain.
I love Breakpoints -> stop on error. It allows me to find errors in my code that much faster. If a simulation runs for 60 seconds (or 3 hours), I want to be able to fix the error right away. Preferreably using the interactivity of the MATLAB to inspect variables, jump up and down in the call stack, plot, and do whatever it is that makes me so much more productive when I am using MATLAB than when I am developing in C (though tools like Microsoft Visual Studio does allow similar luxury when doing C).
My issue is that given that I want to have this feature, anytime my code calls e.g. "interp1()" with erroneous parameters, I will get a breakpoint (potentially) somewhere deep inside MATLAB code that I did not write, do not understand, and have no intention to "fix". Further, my editor opens that file in a new fan. Of course I can choose the drop-down for the call stack, navigate to my own code, then close any mathworks .m files and get tje job done, but that are steps that could have been automated.
This might sound like a small annoyance (it is), but it would be great to have an option to rather break (open the editor) at the last point where user-submitted code was running.

  1 Comment

This is why you would turn off automatically opening the files. You would go to the console and dbstack or dbup until you found the routine you wanted, without having those other files opened.
Not as convenient as what you are asking for, but this is what is available at the moment.

Sign in to comment.