2014-04-04 197 views
9

我最近開始使用MATLAB而不使用GUI,通過使用-nodesktop選項啓動matlab並且速度更快。如何在沒有gui的情況下調試matlab代碼

但是目前我無法在非gui模式下調試.m腳本。每次我必須調試時,我必須打開默認的matlab編輯器。有沒有人想出了一種方法來做到這一點? 在此先感謝

我使用的是Ubuntu Linux,以防萬一。

+1

旁註:'MATLAB -nodesktop -nojvm'還要快! – Vish

+0

-nojvm不允許我繪製圖表。 – Anoop

+0

啊我明白了。是的,它有其侷限性。適合運行快速而髒的代碼。 – Vish

回答

11

要使用命令行設置斷點,dbstop是工具(加上dbclear來清除斷點,dbstatus來列出它們)。

目前有17種不同的形式dbstop,它允許你指定的各種組合:

  1. M文件中停止
  2. 行號
  3. 子功能
  4. 有條件的任意表達式。例如,

    dbstop in myFun.m at 224 if ~exist('x','var') 
    
  5. 在任何運行時錯誤(dbstop if error
  6. 在特定的差錯(e。摹dbstop if error myFun.m:barErrorId
  7. 在遇到
  8. 如果NaNInf任何警告(dbstop if warning)或特定的警告(dbstop if naninf

詳見和不錯的例子,dbstop的文檔。

也習慣dbcont(或F5),dbstep(或F10),dbquit(按Shift + F5),dbstep(也dbstep indbstep out),dbstack(看你在哪裏,你如何到達那裏)。 Windows以外的鍵盤快捷鍵可能不同。

遠不夠用,但仍然非常有用的是dbupdbdown,它們允許您切換工作區上下文(內存堆棧)。

請參閱MathWorks page on Debugging中的功能摘要以及示例列表和操作指南頁面。


相關人士向「db」功能是checkcode,它會檢查你是否有問題的代碼之前,你甚至運行它。這是你在MATLAB編輯器中得到的紅色曲線下劃線的一個很好的替代品。

一旦你得到了一個dbstop的掛起和它的語法,你通常不需要在你的代碼中插入一個keyboard,但它總是一個選項。

1

如果有幫助,您可以使用MATLAB -Dgdb。這將gdb設置爲調試器。你當然需要熟悉gdb。您可以使用standard gdb commands進行調試。

編輯

我的錯。以上不適用於M-Files。 (沒有MATLAB去嘗試是件痛苦的事:)

MATLAB有一套相當不錯的debugging commands,你可以在命令行中使用。如果您在MATLAB代碼中插入鍵盤命令,則可以使用這些命令。

+0

我不明白你在這裏的意思。使用這將允許我調試matlab作爲可執行文件,但不是.m腳本本身。或者我在這裏錯過了什麼? – Anoop

+0

我的錯誤。前段時間我從系統中卸載了MATLAB,所以無法驗證我自己的答案。讓我編輯我的答案:) – Vish

5

嘗試在代碼中放置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,當代碼崩潰時它會自動將您拖入交互式提示。

+0

這就是我一直在尋找。有沒有更多的技巧,如交互式啓用和禁用斷點? – Anoop

0

您可以使用MATLAB的編輯器調試按鈕MATLAB環境中調試

相關問題