如何在没有gui的情况下调试matlab代码

时间:2014-04-04 03:44:43

标签: matlab command-line

我最近开始使用没有GUI的MATLAB,通过使用-nodesktop选项启动matlab,它的速度要快得多。

但是目前我无法在非gui模式下调试.m脚本。每次我必须调试时,我必须打开默认的matlab编辑器。有没有人想出办法来做到这一点? 提前致谢

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

4 个答案:

答案 0 :(得分:13)

要使用命令行设置断点,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
  9. 有关详细信息和优秀示例,请参阅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 :(得分: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,只要你的代码崩溃,它就会自动让你进入交互式提示。

答案 2 :(得分:1)

如果有帮助,您可以使用MATLAB -Dgdb。这将gdb设置为调试器。你当然需要熟悉gdb。

完成后,使用standard gdb commands进行调试。

编辑

我的错误。以上不会为M-Files工作。 (没有MATLAB来尝试解决问题是痛苦的:)

MATLAB有一套非常好的debugging commands可以在命令行中使用。如果在MATLAB代码中插入键盘命令,则可以使用命令。

答案 3 :(得分:1)

您可以使用MATLAB的编辑器调试按钮在MATLAB环境中进行调试

相关问题