停止并继续从调试器执行吗?

有没有什么办法可以像ctrl + c一样从调试器中停止执行matlab程序,但是又可以继续执行(就像您在c#中那样)?

如果不是,除了尝试在matlab代码中抢先设置断点或dbstop语句以外,还有什么更好的解决方法?

我希望能够中断长时间运行的仿真以查看当前状态,然后继续仿真。

我当前正在使用/考虑的两个选项是

  1. 代码中的dbstop命令(或(条件)断点)。缺点是有时我不想停止模拟几个小时,有时只想在几秒钟后停止模拟(而且我不一定事先知道),这种方法不能很好地工作:如果我将中断条件设置为每5分钟中断一次,那么我就无法让matlab在没有互动的情况下运行数小时。如果将条件设置为较高,则必须等待太长时间才能使条件达到。

  2. 包含代码以每隔几秒钟/分钟保存一次工作空间并将该工作空间导入到另一个Matlab实例中。缺点是这是一个很大的麻烦,也不一定允许我使用保存的工作区的状态恢复仿真,然后逐步执行代码进行几次迭代。

我希望有比2个更好的解决方案。谢谢您的任何建议!

编辑:我想我要做的是编写简单的matlab函数,该函数每次迭代都会检查环境变量或磁盘上的文件,如果我在此文件或环境中设置了标志,则会调用dbstop。通过这种方式,我可以通过编辑文件来控制何时(如果需要,可以从多个matlab外部)命中断点。凌乱,但应该可以。


慕神8447489
浏览 680回答 3
3回答

潇潇雨雨

随着R2016a的发布,您只需在代码编辑器中单击“暂停”按钮,它将立即停止。键盘快捷键是Ctrl + F5。要在程序运行时暂停其执行,请在“编辑器”选项卡中,单击“暂停”按钮。MATLAB在下一个可执行行*处暂停执行。代码运行时,“开始”按钮将变为暂停状态:此版本的另一个变化是可以在运行时添加/删除断点。以前,您显然无法做到这一点。

有只小跳蛙

您可以在MATLAB编辑器中设置条件断点。您也可以使用DBSTOP来执行此操作。例如,这将在文件myFcn的第20行设置一个条件断点,当循环变量i是500的倍数时,它将停止执行:dbstop in myFcn.m at 20 if rem(i,500) == 0然后,您可以在检查某些变量后继续执行。
打开App,查看更多内容
随时随地看视频慕课网APP