获取在Matlab代码中执行的实际行

Ben*_*_11 6 matlab

我有这个问题一直困扰着我一段时间,我无法找到答案.

我目前正与一位同事一起研究Matlab代码很长时间.我们每个人都在代码的不同部分工作而不会相互干扰.为了更好地定位自己的代码并遵循程序的流程,我放了几个disp(),以便我知道代码何时到达某一行.

例如:

% code
    disp('You have reached line 1000')
% code...
Run Code Online (Sandbox Code Playgroud)

但是,当我或我的同事在disp()命令之上添加/删除/修改代码行时,这可能很麻烦,因此我在disp()中手动输入的行不再准确.

我的问题:有没有办法在程序已达到的代码中打印实际行号?这可能是一个非常天真的问题,但我想知道它是否完全可能.

nic*_*las 7

你可以查看dbstack.以下是带有示例的文档,具体取决于您要打印的内容:http://www.mathworks.co.uk/help/matlab/ref/dbstack.html

快速示例,您可以放入文件debug_point.m:

%// Tested on Octave only, Matlab might be slightly different
function debug_point()
    d = dbstack(1);
    d = d(1);
    fprintf('Reached file %s, function="%s", line %i\n', d.file, d.name, d.line)
end
Run Code Online (Sandbox Code Playgroud)

然后你可以调用这个函数.您只需更改此功能即可轻松关闭所有打印件.