【发布时间】:2010-07-17 17:30:29
【问题描述】:
有什么方法可以像 ctrl+c 那样从调试器中停止执行 matlab 程序,但随后能够继续执行(就像你可以在 c# 中说的那样)?
如果没有,除了尝试在您的 matlab 代码中预先设置断点或 dbstop 语句之外,还有什么更好的解决方法吗?
我希望能够中断长时间运行的模拟以查看当前状态,然后继续模拟。
我目前正在使用/考虑的两个选项是
代码中的 dbstop 命令(或(条件)断点)。 缺点是有时我不想停止模拟几个小时,有时只想在几秒钟后停止(我不一定提前知道),这不适用于这种方法:如果我将中断条件设置为每 5 分钟中断一次,我不能让 matlab 在没有交互的情况下运行数小时。如果我将条件设置为更高,我必须等待太长时间才能达到条件。
包含每隔几秒/分钟保存工作空间并将工作空间导入第二个 matlab 实例的代码。缺点是这是一个巨大的麻烦,也不一定允许我使用已保存工作区的状态恢复模拟,然后逐步执行代码进行几次迭代。
我希望有比这两个更好的解决方案。感谢您的任何建议!
编辑:我想我要做的是编写简单的 matlab 函数,该函数在每次迭代时检查环境变量或磁盘上的文件,如果我在此文件中设置标志或调用 dbstop环境。这样,我可以通过编辑文件来控制断点何时(以及如果需要的话)从外部 matlab 命中。凌乱,但应该工作。
【问题讨论】:
-
或许你可以试试条件断点
-
感谢 Amro,但条件断点/dbstops 是我在选项 1 中所做的,我也许应该编辑问题以使其更清楚。不幸的是,这对我来说根本不是一个理想的解决方案,这就是为什么我希望有更好的选择
-
哦,我刚刚看了你的编辑,正是我的想法..