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

Обнаружение ошибки времени выполнения и сообщающий в автономном коде имеет эти требования и ограничения:

  • Программное обеспечение сообщения об ошибке использует fprintf для сообщений ошибки при записи к stderr. Это использует abort, чтобы отключить приложение. Если fprintf и abort не доступны, необходимо обеспечить их. Функция abort резко отключает программу. Если ваша система поддерживает сигналы, можно отловить сигнал аварийного прекращения работы (SIGABRT) так, чтобы можно было управлять завершением программы.

  • Сообщения об ошибке находятся на английском языке только.

  • Некоторые проверки на ошибки требуют с двойной точностью поддержки. Поэтому аппаратные средства, на которых выполнения сгенерированного кода должны поддержать с двойной точностью операции.

  • Если программа отключает, выявление ошибок и создание отчетов, что программное обеспечение не отображает стек этапа выполнения. Чтобы осмотреть стек, присоедините отладчик. Кроме того, выявление ошибок и создание отчетов о программном обеспечении не высвобождают средства, такие как выделенная память.

  • Если программа отключает, выявление ошибок и создание отчетов, что программное обеспечение не высвобождает средства, такие как выделенная память.

  • В автономном коде функциональный error отображает сообщение, которое указывает, что ошибка произошла. Чтобы видеть фактическое сообщение, заданное error, необходимо сгенерировать и запустить MEX-функцию.

  • В автономном коде, если названо больше чем 1 аргументом, функциональный assert не сообщает об ошибке и не отключает выполнение. Если названо отдельным аргументом, например, assert(cond), если cond не является постоянным значением true, сообщает об ошибке и отключает выполнение.

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

Больше о

Была ли эта тема полезной?