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 Source. На панели кода, когда вы останавливаетесь на переменной или выражении, подсказка отображает информацию о ее размере, типе и сложности. Кроме того, подсветка синтаксиса помогает вам идентифицировать элементы синтаксиса MATLAB и некоторые атрибуты генерации кода, такие как является ли функция внешней или является ли аргумент постоянным.
Отчет идентифицирует внешнюю функцию с фиолетовым текстом. Подсказка указывает, что функция является внешней.
Оранжевый текст указывает аргумент константы времени компиляции на функцию точки входа или специализированную функцию. Подсказка включает постоянное значение.
Знание значения постоянного аргумента помогает вам понять сгенерированные сигнатуры функции. Это также помогает вам увидеть, когда генерация кода создает специализацию функции для различных значений постоянных аргументов.
Чтобы экспортировать значение в переменную в рабочей области, щелкните значок «Экспорт».
Вкладка Variables содержит информацию о переменных для выбранной функции MATLAB. Чтобы выбрать функцию, щелкните ее на панели MATLAB Source.
Таблица переменных показывает:
Класс, размер и сложность
Свойства фиксированных точек
Является ли массив разреженным
Размещение массива
Эта информация помогает вам отлаживать ошибки, такие как ошибки несоответствия типов, и понять, как генератор кода распространяет типы и представляет данные в сгенерированном коде.
Эта таблица описывает символы, значки и другие индикаторы в таблице переменных.
Столбец в таблице переменных | Индикатор | Описание |
---|---|---|
Имя | расширитель | Переменная имеет элементы или свойства, которые можно увидеть, щелкнув по расширителю. |
Имя | {:} | Неоднородный массив ячеек (все элементы имеют одинаковые свойства). |
Имя | {n} | n первый элемент массива гетерогенного массива ячеек. |
Класс | v > n | v используется повторно с другим классом, размером и сложностью. Номер 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. К числу таких вопросов относятся:
Потенциальные различия между поведением сгенерированного кода и поведением кода MATLAB. Отчет включает сообщения о потенциальных различиях только в том случае, если вы включили создание отчетов о потенциальных различиях. Смотрите Отчеты о потенциальных различиях.
Потенциальные проблемы типа данных в сгенерированном коде, такие как операции с одной точностью и с двойной точностью.
Отчет включает потенциальные проблемы с типами данных, только если у вас есть Embedded Coder и вы включили создание отчетов о потенциальных проблемах с типами данных. Если у вас есть Fixed-Point Designer™, отчет также определяет дорогие операции с фиксированной точкой. См. подсветку потенциальных проблем с типами данных в отчете» (Embedded Coder).
Потенциальные основные проблемы. Смотрите Проект для Row-Major Array Layout.
Проблемы автоматической параллелизации. Смотрите раздел Автоматическое параллелирование циклов в сгенерированном коде.
Вкладка Summary может иметь ссылки на эти дополнительные отчеты:
Отчет о статических метриках кода (требует Embedded Coder). Смотрите Отчет о генерации статических метрик кода для кода, сгенерированного из кода MATLAB (Embedded Coder).
Отчет о замене кода (требует Embedded Coder). См. раздел «Проверка библиотеки замещения кода» (Embedded Coder).
Отчет о преобразовании с фиксированной точкой (требует Fixed-Point Designer). См. «Преобразование кода MATLAB в код с фиксированной точкой».