我通常在顶层运行脚本中的代码。假设我有一个脚本my_error_script.m
,如此:
my_mat = (1:100) / 2;
idx = my_mat(21);
my_mat(idx) = 4;
当我从matlab提示符运行时,我得到以下输出:
Attempted to access my_mat(10.5); index must be a positive integer or logical.
Error in my_error_script (line 3)
my_mat(idx) = 4;
发生了错误,很明显发生了这种情况(即第3行)。运行非常大的脚本时,这是有用的信息。
通常我只在单元格模式下运行脚本的一部分(我认为现在称为代码部分):
% < blah >
%% Run just this cell
my_mat = (1:100) / 2;
idx = my_mat(21);
my_mat(idx) = 4;
%%
% < blah >
在这种情况下,我没有显示错误的位置:
Attempted to access my_mat(10.5); index must be a positive integer or logical.
这可能会使追踪较长脚本中的错误变得非常令人沮丧,即使它们只有10-20行长。
除了将脚本放入一个函数(并不总是理想的)或在循环中的各个点添加disp
语句之外,还可以做些什么来显示错误的行号或位置? / p>
启用dbstop if error
甚至不会将脚本暂停在正确的位置。
答案 0 :(得分:1)
我认为,对你的问题的简短回答是,目前,#34;没有。&#34;
这是MathWorks对Matlab acknowledged的一个已知限制。在单元格模式下启用带有错误消息的行号(现在重命名为代码段)显然在列表中以供将来发布。但是,自at least 2008以来它一直在列表中,并且实施时间表似乎不清楚。
基本上,如果您想要包含错误的行号,您唯一的选择是使用代码段以外的其他内容。建议的解决方法包括:
正如您所发现的,正常的调试工具也不能使用代码段。