Отладьте сгенерированный код, если он производит неожиданные выходные параметры или остановки. Эти результаты происходят из-за программируемых ошибок или логических ошибок в MATLAB® код или поведение определенных функций в сгенерированном коде. Отлаживать ваш сгенерированный код C/C++:
Рассмотрите сгенерированную MEX-функцию, чтобы проверить, что этот код предоставляет ту же функциональность как оригинальный код MATLAB. Это - лучшая практика, чтобы сгенерировать MEX-функцию прежде, чем сгенерировать автономный код для вашего проекта.
Рассмотрите сгенерированный автономный код для ошибок времени выполнения путем установки следующих опций в объекте настройки кода:
cfg = coder.config('lib'); % or 'dll' or 'exe' cfg.RuntimeChecks = 1; codegen myFunction -config cfg
Смотрите RuntimeChecks
в coder.CodeConfig
.
Рассмотрите раздел Extended Capabilities на страницах с описанием для функций, которые вы включаете в свой код. Поведение некоторых функций MATLAB отличается по сгенерированному коду, заставляющему функции произвести различные но эквивалентные выходные значения. Генератор кода проверяет на различия в выполнении во времени выполнения и сообщает о них как о разностях потенциалов. Смотрите, что Разности потенциалов Сообщают.
Рассмотрите вызовы внешних функций C через coder.ceval
. Проверьте, что тип данных, введите и выведите размещение, правильны. MATLAB использует упорядоченное по столбцам размещение по умолчанию.
Ищите любые предупреждения, которые производятся во время генерации кода.
Чтобы развернуть сгенерированный код, запустите функцию инициализации прежде, чем вызвать функцию точки входа. Вызовите оконечную функцию после функции точки входа. Смотрите, что Сгенерированное Использование Инициализирует и Отключает Функции.
Если какие-либо проблемы сохраняются, попытайтесь компилировать код при помощи флага отладки.
Для MEX-функций добавьте -g
к codegen
команда.
codegen myFunction -args {1,2} -g
Для автономной генерации кода создайте coder.config
возразите и измените его как показано.
cfg = coder.config('dll'); % or 'lib' or 'exe' cfg.BuildConfiguration = 'Debug'; codegen myFunction -config cfg
Для получения дополнительной информации смотрите Сгенерированный код Отладки Во время Выполнения SIL (Embedded Coder).
Следуйте за рекомендуемым рабочим процессом, чтобы сгенерировать код при использовании генератора кода. Смотрите Рабочий процесс для Подготовки кода MATLAB для Генерации кода.