Обнаружение ошибки времени выполнения и сообщающий в автономном коде C/C++

Можно сгенерировать автономные библиотеки и исполняемые файлы, которые обнаруживают и сообщают об ошибках времени выполнения, такой как за пределы индексация массива. Если сгенерированный код обнаруживает ошибку, он сообщает об ошибке и отключает программу.

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

Связанные примеры

Больше о