exponenta event banner

Отчеты о создании кода

MATLAB ® Coder™ создает отчет по генерации кода, который помогает:

  • Выполните отладку генерации кода и убедитесь, что код MATLAB подходит для генерации кода.

  • Просмотр созданного кода C/C + +.

  • Трассировка между исходным кодом MATLAB и сгенерированным кодом C/C + +.

  • Узнайте, как генератор кода определяет и распространяет информацию о типе переменных и выражений в коде MATLAB.

  • Определите потенциальные проблемы в созданном коде.

  • Получите доступ к дополнительным отчетам с помощью Embedded Coder ®.

Создание отчета

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

В приложении Кодер MATLAB:

  • Чтобы создать отчет, установите для параметра Всегда создавать отчет значение Yes.

  • Если вы хотите, чтобы приложение открыло отчет для вас, установите параметр Автоматически запускать отчет, если он создан в Yes.

В командной строке используйте codegen опции:

  • Для создания отчета используйте -report вариант.

  • Для создания и открытия отчета используйте -launchreport вариант.

Также можно использовать свойства объекта конфигурации:

  • Чтобы создать отчет, установите GenerateReport кому true.

  • Если хотите codegen чтобы открыть отчет, установите LaunchReport кому true.

Расположение отчета

Отчет о создании кода имеет имя report.mldatx. Он расположен в html подпапка выходной папки генерации кода. При наличии MATLAB R2018a или более поздней версии можно открыть report.mldatx двойным щелчком на файле.

Ошибки и предупреждения

Просмотр сообщений об ошибках генерации кода, предупреждений и информации на вкладке «Все сообщения». Чтобы выделить исходный код для ошибки или предупреждения, щелкните сообщение. Рекомендуется обращаться к первому сообщению, поскольку последующие ошибки и предупреждения могут быть связаны с первым сообщением.

Просмотр ошибок компиляции и связывания, а также предупреждений на вкладке Журналы построения. Генератор кода обнаруживает предупреждения компиляции только для выходных данных MEX или при использовании поддерживаемого компилятора для других типов выходных данных. См. раздел Поддерживаемые компиляторы.

Файлы и функции

В отчете перечислены исходные функции MATLAB и созданные файлы. На панели Источник MATLAB (MATLAB Source) представление Список функций (Function List) организует функции в соответствии с содержимым файла. Для визуализации функций в соответствии со структурой вызова используется ракурс дерева вызовов.

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

Если включен встроенный кодер и отчет создается с возможностью отслеживания, чтобы просмотреть исходный код и созданный код рядом друг с другом на панели кода, щелкните Трассировка кода. Между исходным кодом и сгенерированным кодом можно выполнять интерактивную трассировку. См. раздел Интерактивная трассировка между кодом MATLAB и сгенерированным кодом C/C + + (встроенный кодер).

Если требуется переместить созданные файлы для автономного кода (библиотеки или исполняемого файла) в другую среду разработки, их можно поместить в zip-файл, щелкнув Код пакета (Package Code).

Специализированные функции или классы

Когда функция вызывается с различными типами входных данных или класс использует различные типы для своих свойств, генератор кода производит специализации. На панели MATLAB Source пронумерованные функции (или классы) указывают специализации. Например:

Список функций после преобразования с фиксированной точкой

При преобразовании кода MATLAB с плавающей запятой в код MATLAB с фиксированной запятой и последующем создании кода C/C + + с фиксированной запятой на панели «Источник MATLAB» отображаются исходные функции MATLAB и функции MATLAB с фиксированной запятой. Например:

Источник MATLAB

Чтобы просмотреть функцию MATLAB на панели кода, щелкните имя функции на панели Источник MATLAB (MATLAB Source). На панели кода при приостановке переменной или выражения в подсказке отображается информация о ее размере, типе и сложности. Кроме того, подсветка синтаксиса помогает идентифицировать элементы синтаксиса MATLAB и определенные атрибуты генерации кода, например, является ли функция внешней или аргумент постоянным.

Внешние функции

Отчет идентифицирует внешнюю функцию с фиолетовым текстом. Подсказка указывает, что функция является внешней.

Постоянные аргументы

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

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

Чтобы экспортировать значение в переменную в рабочей области, щелкните значок Экспорт (Export).

Переменные MATLAB

На вкладке Переменные (Variables) представлена информация о переменных для выбранной функции MATLAB. Чтобы выбрать функцию, щелкните ее на панели Источник MATLAB (MATLAB Source).

Таблица переменных показывает:

  • Класс, размер и сложность

  • Свойства типов с фиксированной точкой

  • Является ли массив разреженным

  • Макет массива

Эта информация помогает отладить ошибки, такие как ошибки несоответствия типов, и понять, как генератор кода распространяет типы и представляет данные в сгенерированном коде.

Визуальные индикаторы на вкладке «Переменные»

В этой таблице описываются символы, значки и другие индикаторы в таблице переменных.

Столбец в таблице переменныхИндикаторОписание
ИмярасширительПеременная имеет элементы или свойства, которые можно увидеть, щелкнув расширитель.
Имя{:}Гетерогенный массив ячеек (все элементы имеют одинаковые свойства).
Имя{n}n-й элемент гетерогенного клеточного массива.
Классv > nv повторно используется с другим классом, размером и сложностью. Число n определяет повторное использование с уникальным набором свойств. При приостановке переименованной переменной отчет выделяет только экземпляры этой переменной, которые имеют общий класс, размер и сложность. См. раздел Повторное использование одной и той же переменной с различными свойствами.
Размер:nМассив переменного размера с верхней границей n.
Размер:?Массив переменного размера без верхней границы.
РазмеркурсивМассив переменного размера, размеры которого не изменяют размер во время выполнения.
Классsparse префиксРазреженный массив.
Классcomplex префиксКомплексное число.
Класс

Тип с фиксированной точкой.

Чтобы просмотреть свойства фиксированной точки, щелкните значок.

Индикаторы компоновки массива на вкладке «Переменные»

В этой таблице описываются значки, указывающие макет массива в таблице переменных.

ЗначокОписание

Макет основного массива строк.

Макет основного массива столбцов.

Смесь макетов «строка-основная» и «столбец-основная».

См. Макеты строк и столбцов.

Код трассировки

Можно выполнить трассировку между исходным кодом MATLAB и сгенерированным кодом C/C + + одним из следующих способов:

  • Интерактивная визуализация сопоставления между кодом MATLAB и сгенерированным кодом. Чтобы получить доступ к интерактивной трассировке, в отчете щелкните Код трассировки.

    Кнопка «Код трассировки» доступна только при наличии встроенного кодера и возможности отслеживания кода при создании кода. См. раздел Интерактивная трассировка между кодом MATLAB и сгенерированным кодом C/C + + (встроенный кодер).

  • Включить исходный код в качестве комментариев в созданный код C/C + +.

    В комментарии генератор кода создает тег, который помогает найти соответствующий исходный код MATLAB. При наличии встроенного кодера тег является ссылкой на исходный код. См. раздел Трассировка сгенерированного кода C/C + + к исходному коду MATLAB.

Анализ кода

Генератор кода может обнаруживать и сообщать о проблемах, которые потенциально могут возникнуть в сгенерированном коде. Просмотрите сообщения на вкладке Анализ кода. К числу вопросов относятся:

Дополнительные отчеты

Вкладка Сводка может содержать ссылки на следующие дополнительные отчеты:

Ограничения отчета

  • Сводка по начальной точке показывает отдельные элементы varargin и varargout, но таблица переменных не показывает их.

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

  • В отчете не указана информация о мертвом коде.

Связанные темы