Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
有没有什么办法可以像ctrl + c一样从调试器中停止执行matlab程序,但是又可以继续执行(就像您在c#中那样)?
如果不是,除了尝试在matlab代码中抢先设置断点或dbstop语句以外,还有什么更好的解决方法? 我希望能够中断长时间运行的仿真以查看当前状态,然后继续仿真。 我当前正在使用/考虑的两个选项是
编辑 :我想我要做的是编写简单的matlab函数,该函数每次迭代都会检查环境变量或磁盘上的文件,如果我在此文件或环境中设置了标志,则会调用dbstop。通过这种方式,我可以通过编辑文件来控制何时(如果需要,可以从多个matlab外部)命中断点。凌乱,但应该可以。 回答: 这不一定是最好的方法,但是您可以模拟基于文件的信号/中断框架。可以通过在长时间的模拟循环中不时检查一次特定文件的存在来完成此操作。如果是这样,则可以使用keyboard命令进入交互模式。 大致情况: CHECK_EVERY = 10; %# like a polling rate tic i = 1; %# loop counter while true %# long running loop if rem(i,CHECK_EVERY) == 0 && exist('debug.txt','file') fprintf('%f seconds since last time.\n', toc) keyboard tic end %# ... long calculations ... i = i + 1; end 您将像往常一样运行模拟。当您想插入代码时,只需创建一个文件debug.txt (通常就是这样),执行就会停止,并得到提示: 2.803095 seconds since last time. K>> 然后,您可以像往常一样检查变量...要继续,只需运行return (不要忘记临时重命名或删除文件)。为了退出,请使用dbquit 编辑:对我来说,不是检查文件,而是一个更简单的解决方案,是使用一个虚拟图形作为标志(只要该图形是打开的,继续运行)。 hFig = figure; drawnow while true if ~ishandle(hFig) keyboard hFig = figure; drawnow end %# ... pause(0.5) end 更多&回答... |
![]() |
![]() |