Обнаружьте и отладьте ошибки генерации кода

Отладка стратегий

Чтобы подготовить ваши алгоритмы к генерации кода, MathWorks рекомендует, чтобы вы выбрали стратегию отладки обнаружения и исправления нарушений в ваших приложениях MATLAB®, особенно если они состоят из большого количества файлов MATLAB, которые вызывают функции друг друга. Вот две лучшых практики:

Отладка стратегииЧто сделатьПрофессионалыНедостатки

Восходящая верификация

  1. Проверьте, что ваш самый низкий уровень (лист) функции подходит для генерации кода.

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

  • Эффективный

  • Безопасный

  • Легкий изолировать нарушения синтаксиса

Требует тестов приложения, которые работают с самого начала

Нисходящая верификация

  1. Объявите, что все функции, вызванные функцией верхнего уровня, являются внешними, таким образом, fiaccel не компилирует их.

  2. Проверьте, что ваша функция верхнего уровня подходит для генерации кода.

  3. Работайте вниз в функциональной иерархии к:

    a. Удалите внешние объявления один за другим

    b. Скомпилируйте и проверьте каждую функцию, заканчивающуюся листовыми функциями.

Позволяет вам сохранить свои тесты верхнего уровня

Вводит посторонний код, включая который необходимо удалить после верификации кода:

  • Внешние объявления

  • Дополнительные операторы присваивания по мере необходимости, чтобы преобразовать непрозрачные значения, возвращенные внешними функциями к ненепрозрачным значениям.

Выявление ошибок во время проектирования

Обнаружить потенциал выходит для файла MEX, создающего, когда вы пишете свой алгоритм MATLAB, добавьте директиву %#codegen в код, чтобы вы хотели, чтобы fiaccel скомпилировал. Добавление этой директивы указывает, что вы намереваетесь сгенерировать код из алгоритма, и включает подробную диагностику во время анализа кода MATLAB.

Выявление ошибок во время компиляции

Прежде чем можно будет успешно сгенерировать код из алгоритма MATLAB, необходимо проверить, что алгоритм не содержит синтаксис и нарушения семантики, которые вызвали бы ошибки времени компиляции, как описано в Обнаруживают и Ошибки Генерации кода Отладки.

fiaccel проверяет на все потенциальные нарушения синтаксиса во время компиляции. Когда fiaccel обнаруживает ошибки или предупреждения, он автоматически представляет отчет генерации кода, который описывает проблемы и обеспечивает ссылки на незаконный код. См. Отчеты Генерации кода.

Если ваш код MATLAB вызывает функции на пути MATLAB, fiaccel пытается скомпилировать эти функции, если вы не объявляете, что они являются внешними.