Stop and continue execution from debugger possible?

Viewed 14395

Is there any way to stop the execution of a matlab program from the debugger like ctrl+c does, but then being able to continue execution (like you can in say c#)?

If not, is there any better way to workaround this other than trying to pre-emptively set break points or dbstop statements in your matlab code?

I would like to be able to interrupt a long running simulation to look at the current state and then continue the simulation.

The two options I'm currently using/considering are

  1. dbstop commands (or (conditional) breakpoints) in the code. Drawback is that sometimes I don't want to stop the simulation for a few hours, sometimes want to stop after only a few seconds (and I don't necessarily know that in advance) and this doesn't work well with this approach: If I set the break condition to break every 5 minutes, I can't leave matlab running for hours without interaction. If I set the condition to higher, I have to wait too long for the condition to hit.

  2. include code to save the workspace every few seconds/minutes and import the workspace into a second matlab instance. Drawback is that this is a huge hassle and also doesn't necessarily allows me to resume the simulation with the state of the saved workspace then step through the code for a few iterations.

I'm hoping there is a better solution than either of the 2. Thanks for any advice!

Edit: I think what I'm going to do is write simple matlab function that checks an environment variable or a file on disk every iteration and calls dbstop if I set a flag in this file or env. This way I can control when (and if needed which of several) the breakpoint hits from outside matlab by editing the file. Messy, but should work.

6 Answers

If saving the workspace to a file is a good proxy for what you want, how about making a simple GUI with a toggle button. In your code, check the state of the button. If the button is depressed, save the state, update a static text to reflect time stamp of last save, unpress the button. Optionally, have a conditional breakpoint based on the state of that toggle button.

After certain version (I don't know which one exactly):

Windows: Ctrl + F5
Mac: Command + F5 (I guess)
Unix: I am looking for answer too

After 2016a, there is a button for that on the interface too.

Related