I wonder what the difference is between entering a few lines in the command window, or letting a script execute them.
In the question Escape from nested try - catch sta
I think it's related to MATLAB's just-in-time (JIT) compiler, which compiles functions before it runs them.
It seems that it compiles functions differently if dbstop
is set or not (see here for reference). As it currently stands, MATLAB can not recompile a function while it is run (just try saving a changed function during a dbstop
, and you will get a message informing you). As you can add and remove breakpoints during a dbstop
I think you can also do so programmatically, but it should be impossible to "turn on" debugging if it wasn't turned on at "compile time"
So in your cases:
F9
it's just pasted and parsed as if you input it manually. So first dbstop
is set, then mytestmain
gets compiled and executed.mytestmain
and then execute it - so dbstop
would be set after compilation and therefore not in effect.Depending on what you mean by "doesn't work", it could just be because the debugger is a special context and certain debugger commands - dbup
, dbdown
, and dbquit
- only work when you're at a debugger "K>>" prompt. Once you call a script, you're no longer at the debugger prompt but in normal code execution - inside a nested M-code call stack - and they just don't work there. When you F9, it does the lines individually, so each one is done from the prompt.
As a workaround, if you really want to execute a sequence of debugger commands like this, you could write a little Java Swing widget to enter the text in to the command window just as though you were typing it in.