Рассмотрим следующий foo.m
файл:Matlab: показать путь, полный ошибок
try
disp(r3)
catch ME
disp(getReport(ME))
end
Когда я запускаю его:
matlab -nodisplay -nodesktop -nosplash -nojvm -wait -r "run('foo.m')"
я получаю:
Undefined function or variable 'r3'.
Error in foo (line 2)
disp(r3)
Error in run (line 96)
evalin('caller', [script ';']);
мне было интересно, если это можно отобразить полный путь к файлам, на которые ссылаются ошибки. Я знаю, что могу использовать which
и, например, получить:
» which run
C:\prog-lang\matlab\toolbox\matlab\lang\run.m
Но я хотел бы ошибки, которые будут непосредственно отображаться как
Error in C:\prog-lang\matlab\toolbox\matlab\lang\run.m (line 96)
, а не
Error in run (line 96)
Спасибо за ваш ответ. К сожалению, когда я пытаюсь выполнить свою функцию и код, я все равно получаю базовое имя, а не полный путь. Я использую Matlab R2015a. Вы знаете, почему это может случиться? Еще один вопрос: ваше решение должно также работать с предупреждениями? – petobens
Проблема заключается в том, что 'dbstack()' всегда возвращает пустой массив. Не знаю, как это исправить. – petobens
Я попытался использовать 'try; surf, catch ME, disp (ME); disp (ME.stack); end', но при вызове 'foo.m' файла с' run ('foo') ',' ME.stack' пуст. – petobens