Отчеты генерации кода

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

  • Отладите проблемы генерации кода и проверьте, что ваш код MATLAB подходит для генерации кода.

  • Просмотрите сгенерированный код C/C + +.

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

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

  • Идентифицируйте потенциальные проблемы в сгенерированном коде.

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

Генерация отчетов

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

В приложении MATLAB Coder:

  • Чтобы сгенерировать отчет, установите Always create a report равным Yes.

  • Если вы хотите, чтобы приложение открыло для вас отчет, установите Automatically launch a report if one is generated равным Yes.

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

  • Чтобы сгенерировать отчет, используйте -report опция.

  • Чтобы сгенерировать и открыть отчет, используйте -launchreport опция.

Кроме того, используйте свойства объекта строения:

  • Чтобы сгенерировать отчет, задайте GenerateReport на true.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если вы преобразовываете код MATLAB с плавающей точкой в код MATLAB с фиксированной точкой, а затем генерируете код C/C + + с фиксированной точкой, на панели MATLAB Source перечисляются исходные функции MATLAB и функции MATLAB с фиксированной точкой. Для примера:

Источник MATLAB

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

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

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

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

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

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

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

Переменный MATLAB

Вкладка Variables содержит информацию о переменных для выбранной функции MATLAB. Чтобы выбрать функцию, щелкните ее на панели MATLAB Source.

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

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

  • Свойства фиксированных точек

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

  • Размещение массива

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

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

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

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

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

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

Индикаторы размещения массива на вкладке Переменные

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

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

Основная строка размещения массива.

Основной столбец размещения массива.

Смесь основных и основных размещений столбцов.

См. Разделы «Основная строка» и «Основной столбец» Размещений

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

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

  • Интерактивно визуализируйте отображение между кодом MATLAB и сгенерированным кодом. Для доступа к интерактивной трассировке в отчете нажмите Trace Code.

    Кнопка Trace Code активируется, только если у вас есть Embedded Coder и вы включили трассируемость кода, когда вы сгенерировали код. Смотрите Интерактивное Отслеживание между Кодом MATLAB и Сгенерированным Кодом C/C + + (Embedded Coder).

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

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

Аналитика кода

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

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

Вкладка Summary может иметь ссылки на эти дополнительные отчеты:

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

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

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

  • В отчете не отображается информация о мертвом коде.

Похожие темы