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

Стратегии отладки

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

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

Верификация снизу вверх

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

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

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

  • Безопасный

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

Требуется тестирование приложений, которое работает снизу вверх

Верификация сверху вниз

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

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

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

    А. Удалять внешние декларации один за другим

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

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

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

  • Внешние декларации

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

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

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

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

Прежде чем вы сможете успешно сгенерировать код из алгоритма MATLAB, необходимо проверить, что алгоритм не содержит нарушений синтаксиса и семантики, которые могли бы вызвать ошибки во время компиляции, как описано в Detect и Debug Code Generation Errors.

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

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