我最近开始使用没有GUI的MATLAB,通过使用-nodesktop选项启动matlab,它的速度要快得多。
但是目前我无法在非gui模式下调试.m脚本。每次我必须调试时,我必须打开默认的matlab编辑器。有没有人想出办法来做到这一点? 提前致谢
我正在使用Ubuntu Linux,以防万一。
答案 0 :(得分:13)
要使用命令行设置断点,dbstop
是工具(加dbclear
清除断点,dbstatus
列出断点)。
dbstop
目前有17种不同的形式,允许您指定以下各种组合:
有条件的任意表达式。例如,
dbstop in myFun.m at 224 if ~exist('x','var')
dbstop if error
)dbstop if error myFun.m:barErrorId
)dbstop if warning
)或特定警告NaN
或Inf
(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
,但它始终是选项。
答案 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环境中进行调试