我最近開始使用MATLAB而不使用GUI,通過使用-nodesktop選項啓動matlab並且速度更快。如何在沒有gui的情況下調試matlab代碼
但是目前我無法在非gui模式下調試.m腳本。每次我必須調試時,我必須打開默認的matlab編輯器。有沒有人想出了一種方法來做到這一點? 在此先感謝
我使用的是Ubuntu Linux,以防萬一。
我最近開始使用MATLAB而不使用GUI,通過使用-nodesktop選項啓動matlab並且速度更快。如何在沒有gui的情況下調試matlab代碼
但是目前我無法在非gui模式下調試.m腳本。每次我必須調試時,我必須打開默認的matlab編輯器。有沒有人想出了一種方法來做到這一點? 在此先感謝
我使用的是Ubuntu Linux,以防萬一。
要使用命令行設置斷點,dbstop
是工具(加上dbclear
來清除斷點,dbstatus
來列出它們)。
目前有17種不同的形式dbstop
,它允許你指定的各種組合:
有條件的任意表達式。例如,
dbstop in myFun.m at 224 if ~exist('x','var')
dbstop if error
)dbstop if error myFun.m:barErrorId
)NaN
或Inf
任何警告(dbstop if warning
)或特定的警告(dbstop if naninf
)詳見和不錯的例子,dbstop
的文檔。
也習慣dbcont
(或F5),dbstep
(或F10),dbquit
(按Shift + F5),dbstep
(也dbstep in
,dbstep out
),dbstack
(看你在哪裏,你如何到達那裏)。 Windows以外的鍵盤快捷鍵可能不同。
遠不夠用,但仍然非常有用的是dbup
和dbdown
,它們允許您切換工作區上下文(內存堆棧)。
請參閱MathWorks page on Debugging中的功能摘要以及示例列表和操作指南頁面。
相關人士向「db
」功能是checkcode
,它會檢查你是否有問題的代碼之前,你甚至運行它。這是你在MATLAB編輯器中得到的紅色曲線下劃線的一個很好的替代品。
一旦你得到了一個dbstop
的掛起和它的語法,你通常不需要在你的代碼中插入一個keyboard
,但它總是一個選項。
如果有幫助,您可以使用MATLAB -Dgdb
。這將gdb設置爲調試器。你當然需要熟悉gdb。您可以使用standard gdb commands進行調試。
編輯
我的錯。以上不適用於M-Files。 (沒有MATLAB去嘗試是件痛苦的事:)
MATLAB有一套相當不錯的debugging commands,你可以在命令行中使用。如果您在MATLAB代碼中插入鍵盤命令,則可以使用這些命令。
嘗試在代碼中放置keyboard
命令以插入斷點。當達到keyboard
命令時,MATLAB將進入交互式提示,您可以使用它來檢查變量。例如:
x = rand(10,10);
y = rand(10,5);
z = x * y;
keyboard; % you can interactively inspect x, y, z here
z = sort(z);
要離開鍵盤模式,您可以鍵入dbquit
退出程序,或return
繼續執行程序。
另一個竅門是打開dbstop if error
,當代碼崩潰時它會自動將您拖入交互式提示。
這就是我一直在尋找。有沒有更多的技巧,如交互式啓用和禁用斷點? – Anoop
您可以使用MATLAB的編輯器調試按鈕MATLAB環境中調試
旁註:'MATLAB -nodesktop -nojvm'還要快! – Vish
-nojvm不允許我繪製圖表。 – Anoop
啊我明白了。是的,它有其侷限性。適合運行快速而髒的代碼。 – Vish