Сохранение ошибок сценария командной строки Matlab в журнале
Я работаю с Matlab на кластере серверов, поэтому у меня нет дисплея и использую его через командную строку. Запуск скриптов работает нормально с
matlab -nodesktop -nosplash my_script
Чтобы сохранить вывод в журнал и выйти из Matlab после выполнения my_script
Я изменил команду следующим образом:
matlab -nodesktop -nosplash -r "try, my_script; end, quit force" | tee simple.log
Однако сообщения об ошибках, которые отображаются в версии Matlab Desktop, не отображаются в журнале, что делает отладку очень сложной.
Есть ли способ сохранить выходные данные Matlabs с сообщениями об ошибках в журнале?
2 ответа
Предполагая, что вы работаете в Linux, обратитесь к этим аргументам командной строки. Чтобы получить вывод Matlab в файл, вы можете вызвать
matlab -nosplash -nodesktop -logfile my.log -r "try; ...; catch e;.. "
Из документации
-logfile имя файла
Скопируйте вывод командного окна, включая отчеты об ошибках, в имя файла, указанное в виде строки.
Вопросы и ответы здесь привели меня к решению (на две строки для удобства чтения):
matlab -nosplash -nodesktop -r
"try, my_script; catch e, disp(getReport(e)), end, quit force" | tee my_.log
Простая вещь, которую я забыл, это то, что try
глотает ошибку за исключением. catch e, disp(getReport(e))
отображает сообщение об ошибке как обычно, даже с номером строки. tee simple.log