Сохранение ошибок сценария командной строки 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

Другие вопросы по тегам