有沒有什么辦法可以像ctrl + c一樣從調試器中停止執行matlab程序,但是又可以繼續執行(就像您在c#中那樣)?如果不是,除了嘗試在matlab代碼中搶先設置斷點或dbstop語句以外,還有什么更好的解決方法?我希望能夠中斷長時間運行的仿真以查看當前狀態,然后繼續仿真。我當前正在使用/考慮的兩個選項是代碼中的dbstop命令(或(條件)斷點)。缺點是有時我不想停止模擬幾個小時,有時只想在幾秒鐘后停止模擬(而且我不一定事先知道),這種方法不能很好地工作:如果我將中斷條件設置為每5分鐘中斷一次,那么我就無法讓matlab在沒有互動的情況下運行數小時。如果將條件設置為較高,則必須等待太長時間才能使條件達到。包含代碼以每隔幾秒鐘/分鐘保存一次工作空間并將該工作空間導入到另一個Matlab實例中。缺點是這是一個很大的麻煩,也不一定允許我使用保存的工作區的狀態恢復仿真,然后逐步執行代碼進行幾次迭代。我希望有比2個更好的解決方案。謝謝您的任何建議!編輯:我想我要做的是編寫簡單的matlab函數,該函數每次迭代都會檢查環境變量或磁盤上的文件,如果我在此文件或環境中設置了標志,則會調用dbstop。通過這種方式,我可以通過編輯文件來控制何時(如果需要,可以從多個matlab外部)命中斷點。凌亂,但應該可以。
3 回答

瀟瀟雨雨
TA貢獻1833條經驗 獲得超4個贊
隨著R2016a的發布,您只需在代碼編輯器中單擊“暫?!卑粹o,它將立即停止。鍵盤快捷鍵是Ctrl + F5。
要在程序運行時暫停其執行,請在“編輯器”選項卡中,單擊“暫?!卑粹o。MATLAB在下一個可執行行*處暫停執行。
代碼運行時,“開始”按鈕將變為暫停狀態:
此版本的另一個變化是可以在運行時添加/刪除斷點。以前,您顯然無法做到這一點。

有只小跳蛙
TA貢獻1824條經驗 獲得超8個贊
您可以在MATLAB編輯器中設置條件斷點。您也可以使用DBSTOP來執行此操作。例如,這將在文件myFcn的第20行設置一個條件斷點,當循環變量i是500的倍數時,它將停止執行:
dbstop in myFcn.m at 20 if rem(i,500) == 0
然后,您可以在檢查某些變量后繼續執行。
添加回答
舉報
0/150
提交
取消