Можно сгенерировать автономные библиотеки и исполняемые файлы, которые обнаруживают и сообщают об ошибках времени выполнения, такой как за пределы индексация массива. Если сгенерированный код обнаруживает ошибку, он сообщает об ошибке и отключает программу.
Во время разработки, прежде чем вы сгенерируете код C/C++, это - лучшая практика протестировать сгенерированный код путем выполнения версии MEX алгоритма. Однако некоторые ошибки происходят только на целевом компьютере. Чтобы обнаружить эти ошибки, сгенерируйте автономный код C/C++ с включенным обнаружением ошибки времени выполнения. Обнаружение ошибки времени выполнения может влиять на производительность сгенерированного кода. Если производительность является фактором для вашего приложения, не генерируйте производственный код с включенным обнаружением ошибки времени выполнения.
По умолчанию обнаружение ошибки времени выполнения отключено для автономных библиотек и исполняемых файлов. Включить обнаружение ошибки времени выполнения и сообщающий для автономных библиотек и исполняемых файлов:
В командной строке используйте свойство RuntimeChecks
настройки кода.
cfg = coder.config('lib'); % or 'dll' or 'exe' cfg.RuntimeChecks = true; codegen -config cfg myfunction
В приложении MATLAB® Coder™, в диалоговом окне настроек проекта, на панели Debugging, устанавливают флажок Generate run-time error checks.
Обнаружение ошибки времени выполнения и сообщающий в автономном коде имеет эти требования и ограничения:
Программное обеспечение сообщения об ошибке использует fprintf
к ошибке при записи обменивается сообщениями к stderr
. Это использует abort
отключать приложение. Если fprintf
и abort
не доступны, необходимо обеспечить их. abort
функция резко отключает программу. Если ваша система поддерживает сигналы, можно отловить сигнал аварийного прекращения работы (SIGABRT
) так, чтобы можно было управлять завершением программы.
Сообщения об ошибке находятся на английском языке только.
Некоторые проверки на ошибки требуют поддержки с двойной точностью. Поэтому оборудование, на котором запуски сгенерированного кода должны поддержать операции с двойной точностью.
Если программа завершает работу, выявление ошибок и создание отчетов, что программное обеспечение не отображает стек этапа выполнения. Чтобы смотреть стек, присоедините отладчик. Кроме того, выявление ошибок и создание отчетов о программном обеспечении не высвобождают средства, такие как выделенная память.
Если программа завершает работу, выявление ошибок и создание отчетов, что программное обеспечение не высвобождает средства, такие как выделенная память.
В автономном коде, функциональном error
отображает сообщение, которое указывает, что ошибка произошла. Видеть фактическое сообщение, заданное error
, необходимо сгенерировать и запустить MEX-функцию.
В автономном коде, если названо больше чем 1 аргументом, функциональным assert
не сообщает ошибка и не отключает выполнение. Если названо отдельным аргументом, например, assert(cond)
, если cond
не постоянный true
значение, сообщает об ошибке и отключает выполнение.