出于调试目的,我想打印出m文件的名称和行号,以便在出现故障时说出类似
的内容。Error at 197th line of run.m
鉴于Matlab显示此类型的错误消息,必须有一个解决方案。
我该怎么做?
===========后续问题==============
谢谢!但我得到了一个后续问题。
我有main.m,这是主要的m文件,main.m调用lower.m
我写了
info = dbstack()
和
try
error('Toto')
catch ME
ME.stack
end
到main.m.然后Matlab显示
info =
file: 'main.m'
name: 'main'
line: 15
ans =
file: 'C:\Users\account1\Google Drive\1AAA-RA\11HHJK(O…'
name: 'main'
line: 18
但是,当我将dbstack和try-catch的东西写入lower.m时,Matlab不会显示任何确切的信息。
我运行了main.m和main.m,调用了较低级别的m文件,但它没有显示任何信息。
info =
2x1 struct array with fields:
file
name
line
ans =
2x1 struct array with fields:
file
name
line
如何让它显示每个文件,名称,行信息?
理想情况下,Matlab将显示main.m和lower.m的信息,如下所示:
file1: 'main.m'
name1: 'main'
line1: 15
file2: 'lower.m'
name2: 'lower'
line2: 6
这可能吗?
答案 0 :(得分:1)
您可以使用Matlab Exception对象。行信息包含在“堆栈”属性中。
示例创建一个'test.m'脚本:
try
error('Toto')
catch ME
ME.stack
end
命令窗口的输出是:
>> test
ans =
file: 'D:\MATLAB\Sandboxes\AVLab\test.m'
name: 'test'
line: 2
或者没有try / catch,您可以使用MException.last。
请参阅文档链接http://www.mathworks.com/help/matlab/matlab_prog/capture-information-about-errors.html
答案 1 :(得分:1)
info = dbstack();
% info is now a struct that has 3 fields
% info.file
% is a string containing the file name in which the function appears.
% info.name
% is a string containing the name of the function within the file.
% info.line
% is the line number on which dbstack was called
答案 2 :(得分:-1)
MATLAB的错误功能会自动显示文件名和行号。
function [ ] = wsgefiow9ey( )
n = 7;
if n > 1
msg = 'Error: n is too big.';
error(msg)
end % if
end % function definition
click here to see console output resulting from call to MATLAB error function