Можно сгенерировать автономные библиотеки и исполняемые файлы, которые обнаруживают и сообщают об ошибках времени выполнения, такой как за пределы индексация массива. Если сгенерированный код обнаруживает ошибку, он сообщает об ошибке и отключает программу.
Во время разработки, прежде чем вы сгенерируете код 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
, сообщает об ошибке и отключает выполнение.