Dor*_*oom 12 matlab error-reporting
有没有办法将MATLAB错误消息保存到文件中?
这可能是一个简单的问题,但谷歌无法给我答案.我编译了一个GUI可执行文件,可以在没有MATLAB许可证的情况下使用,偶尔会冻结.出于审美目的,我通常附带这样的可执行文件来抑制命令窗口,因此我无法通过命令提示符输出错误消息.我希望能够创建一个错误日志,可以通过电子邮件发送给我进行调试.
谢谢!
Jon*_*nas 12
在代码周围使用try ... catch语句.在catch块中,您可以写出包含堆栈信息的错误.使用sendmail,您甚至可以让代码通过邮件通知您错误(理想情况下,弹出窗口可让用户决定是否要与您共享崩溃信息)
try
   % your code here
catch err
   %open file
   fid = fopen('logFile','a+');
   % write the error to file
   % first line: message
   fprintf(fid,'%s\n',err.message);
   % following lines: stack
   for e=1:length(err.stack)
      fprintf(fid,'%sin %s at %i\n',txt,err.stack(e).name,err.stack(e).line);
   end
   % close file
   fclose(fid)
end 
Run Code Online (Sandbox Code Playgroud)
编辑有关如何将错误消息写入文件更明确
And*_*nke 11
使用"diary"命令创建日志文件.这将使Matlab将所有命令行输出的副本写入文件,包括警告,错误消息和未处理异常的堆栈跟踪.然后,Sendmail()可以在发生错误时将其发送给您.如果要节省空间,可以让程序在正常(无错误)程序退出时删除其日志文件.
恕我直言这比使用"try ... catch; write errors; end"更可取,因为:
还有一个命令行选项,可以执行相同的操作; 我不知道如何为编译的Matlab调用它.