簡體   English   中英

如何在沒有gui的情況下調試matlab代碼

[英]How to debug matlab code without gui

我最近開始使用沒有GUI的MATLAB,通過使用-nodesktop選項啟動matlab,它的速度要快得多。

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

我正在使用Ubuntu Linux,以防萬一。

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

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

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

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

有關詳細信息和示例,請參閱dbstop的文檔。

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

dbupdbdown很少使用,但仍然非常有用,它允許您切換工作空間上下文(內存堆棧)。

請參閱調試MathWorks頁面中的函數摘要以及示例和操作方法頁面列表。


與“ db ”函數相關的是checkcode ,它會在您運行之前檢查代碼是否存在可能的問題。 這是紅色波浪形的一個很好的替代品,強調你可以在MATLAB編輯器中獲得。

一旦你掌握了dbstop及其語法,你就不需要在代碼中插入keyboard ,但它總是一個選項。

嘗試將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會在你的代碼崩潰時自動將你帶入交互式提示。

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

完成后,使用標准gdb命令對其進行調試。

編輯

我的錯。 以上不適用於M檔案。 (沒有MATLAB來試試看是痛苦的:)

MATLAB有一套很好的調試命令可供命令行使用。 如果在MATLAB代碼中插入鍵盤命令,則可以使用這些命令。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM