In MATLAB, I'm running some code which takes a while to run. I'd like to pause the code to check on some variable values. Is there a way I can do this without having to re-run the code from the beginning? I don't want to terminate the program; just pause it.
You can halt execution and give a command prompt in two ways of which I am aware:
keyboard
in your code where you want to stop.You can resume and stop execution with dbcont
and dbquit
, respectively. To step forward, use dbstep
. dbstack
lets you see where you are. There are many more commands. The help page for any of these will give you other suggestions.
As Dennis Jaheruddin has pointed out, dbstop
also has several useful features worth trying. In particular is the ability to set conditional and global (any line meeting a criterion) breakpoints via the dbstop if
syntax. For example, dbstop if error
will break to a debugging command prompt on any error. One suggestion he made, which I now do, is to put dbstop if error
into startup.m
so that this behavior will be default when you start MATLAB. You may need to create this file in a userpath
folder; edit(fullfile(regexp(userpath,'^[^;]*','match','once'),'startup.m'))
.