Можно экспортировать информацию о генерации кода к переменной в основной рабочей области MATLAB®. Эта переменная содержит объект coder.ReportInfo
, свойства которого содержат эту информацию:
Сводные данные генерации кода, которые включают информацию об успехе генерации кода, дате и времени, пути выходного файла, процессора, версии MATLAB Coder™, набора инструментальных средств и конфигурации сборки.
Объект настройки генерации кода.
Текст, путь и расширение входных файлов.
Текст, путь и расширение сгенерированных файлов.
Для всех функций MATLAB и методов, привлеченных в генерацию кода: имя, специализация, файл, запускает индекс и индекс конца.
Ошибка генерации кода, предупреждение и информационные сообщения.
Смотрите кодер. Свойства ReportInfo.
Можно использовать информационный объект отчета, чтобы программно получить доступ к этой информации о генерации кода. Например, можно отобразить сообщения генерации кода в командной строке MATLAB. Чтобы выполнить это действие, в вашем скрипте сборки, получают доступ к свойству, которое содержит эти сообщения.
Предположим, что вы хотите экспортировать генерацию кода, сообщают информацию переменной info
в вашем основном рабочем пространстве MATLAB. Выполнить одно из следующих действий:
В приложении MATLAB Coder, на вкладке Debugging, устанавливает Export report information to variable на имя переменной info
.
В командной строке используйте команду codegen
с опцией -reportinfo
. Задайте имя переменной после опции -reportinfo
.
codegen myFunction -reportinfo info
В командной строке, набор свойство объекта настройки кода ReportInfoVarName
к вектору символов 'info'
.
Сгенерируйте и откройте отчет генерации кода. Нажмите Export Report Information. В диалоговом окне задайте имя переменной info
.
Создайте информационный объект отчета для успешного процесса генерации кода. Осмотрите свойства этого объекта.
Задайте функцию MATLAB foo
:
function b = foo(a) b = svd(a,0); end
Сгенерируйте MEX-функцию для foo
. Задайте вход a
как матрицу переменного размера, размерности которой неограниченны. Экспорт генерация кода сообщает информацию переменной info
в вашем основном рабочем пространстве MATLAB.
codegen -config:mex foo -args {coder.typeof(1,[Inf,Inf])} -reportinfo info
Генератор кода производит MEX-функцию foo_mex
. Генератор кода также создает информационный объект отчета info
в основном рабочем пространстве MATLAB.
Осмотрите структуру информационного объекта отчета. Объект имеет шесть свойств, которые содержат информацию о генерации кода.
ReportInfo with properties: Summary: [1×1 coder.Summary] Config: [1×1 coder.MexCodeConfig] InputFiles: [1×1 coder.CodeFile] GeneratedFiles: [25×1 coder.CodeFile] Functions: [1×1 coder.Function] Messages: [0×1 coder.Message]
Осмотрите каждое свойство info
отдельно.
info.Summary
является объектом coder.Summary
, свойства которого содержат информацию об успехе генерации кода, дате и времени генерации кода, пути выходного файла, процессора и версии MATLAB Coder.
Summary with properties: Success: true Date: '01-Nov-2018 15:02:45' OutputFile: 'C:\coder\R2019a\Report Info Object\foo_mex.mexw64' Processor: 'Generic->MATLAB Host Computer' Version: 'MATLAB Coder 4.2 (R2019a)'
Если вы генерируете автономный код, info.Summary
также содержит информацию о наборе инструментальных средств и конфигурации сборки.
info.Config
является объектом настройки кода. В этом примере, потому что вы сгенерировали MEX-функцию для foo
, это - объект coder.MexCodeConfig
.
info.InputFiles
является массивом объектов coder.CodeFile
. Каждый элемент массива содержит текст, путь и расширение входного файла генерации кода. В этом примере массив имеет всего один элемент, потому что существует только один входной файл foo.m
.
CodeFile with properties: Text: 'function b = foo(a)←↵b = svd(a,0);←↵end←↵' Path: 'C:\coder\R2019a\Report Info Object\foo.m' Extension: '.m'
info.GeneratedFiles
является массивом объектов coder.CodeFile
. Каждый элемент массива содержит текст, путь и расширение сгенерированного файла. В этом примере это - 25
-by-1
массив, потому что существуют сгенерированные файлы 25
.
25×1 CodeFile array with properties: Text Path Extension
info.Function
является массивом объектов coder.Function
. Каждый элемент массива содержит следующую информацию о функции MATLAB или методе:
Имя и специализация.
Объект coder.CodeFile
для входного файла, который содержит функцию или метод. Этот объект также содержится в info.InputFiles
.
Запуск и индекс конца функции или метода в тексте файла.
В этом примере info.Function
имеет один элемент, потому что существует только одна функция MATLAB во входном файле foo.m
.
Function with properties: Name: 'foo' Specialization: 0 File: [1×1 coder.CodeFile] StartIndex: 1 EndIndex: 39
info.Messages
является массивом объектов coder.Message
, которые содержат ошибку генерации кода, предупреждение и информационные сообщения. В этом примере нет таких сообщений. Так, это свойство является пустым массивом.
0×1 Message array with properties: Identifier Type Text File StartIndex EndIndex
Создайте информационный объект отчета для процесса генерации кода, который перестал работать. Осмотрите свойства этого объекта.
Задайте функцию MATLAB foo
:
function b = foo(a) b = svd(a,0); end
Сгенерируйте MEX-функцию для foo
. Задайте вход a
как скаляр строки. Экспорт генерация кода сообщает информацию переменной info
в вашем основном рабочем пространстве MATLAB.
codegen -config:mex foo -args {"A string scalar"} -reportinfo info
Генерация кода перестала работать, потому что скаляр строки не является допустимым входом для функции MATLAB svd
. Генератор кода создает информационный объект отчета info
в основном рабочем пространстве MATLAB.
Осмотрите структуру информационного объекта отчета. Объект имеет шесть свойств, которые содержат информацию о генерации кода.
ReportInfo with properties: Summary: [1×1 coder.Summary] Config: [1×1 coder.MexCodeConfig] InputFiles: [1×1 coder.CodeFile] GeneratedFiles: [0×0 coder.File] Functions: [1×1 coder.Function] Messages: [2×1 coder.Message]
Осмотрите свойства info.Summary
и info.Messages
.
info.Summary
указывает, что генерация кода перестала работать.
Summary with properties: Success: false Date: '01-Nov-2018 15:05:01' OutputFile: 'C:\coder\R2019a\Report Info Object\codegen\mex\foo' Processor: 'Generic->MATLAB Host Computer' Version: 'MATLAB Coder 4.2 (R2019a)'
info.Messages
является массивом объектов coder.Message
, которые содержат ошибку генерации кода, предупреждение и информационные сообщения. Каждый элемент массива содержит следующую информацию об одном сообщении:
Идентификатор и тип сообщения.
Текст сообщения.
Объект coder.CodeFile
для входного файла, который вызвал сообщение.
Запуск и индекс конца части текста файла, который вызвал сообщение.
В этом примере существует два сообщения об ошибке. Так, info.Messages
является 2
-by-1
массив.
2×1 Message array with properties: Identifier Type Text File StartIndex EndIndex
Просмотрите первый элемент массива info.Messages(1)
.
Message with properties: Identifier: 'Coder:toolbox:unsupportedClass' Type: 'Error' Text: 'Function 'svd' is not defined for values of class 'string'.' File: [1×1 coder.CodeFile] StartIndex: 26 EndIndex: 33
StartIndex
и EndIndex
индексировать в текст файла.info.Messages(1).File.Text(26:33)
'svd(a,0)'
Чтобы вручную осмотреть текст входных файлов, номера строки и номера столбцов, соответствующие StartIndex
и значениям EndIndex
, полезны. Используйте функцию getLineColumn
, чтобы получить эту информацию. Эта функция возвращает две структуры, которые содержат номера строки и номера столбцов, соответствующие StartIndex
и EndIndex
соответственно.
В предыдущем примере, чтобы вручную осмотреть часть foo.m
, который вызвал первое сообщение об ошибке, отображают текст файла.
info.Messages(1).File.Text
Текст файла отображен как:
'function b = foo(a) b = svd(a,0); end '
Доступ к номерам строки и номерам столбцов части текста, который вызвал первое сообщение об ошибке.
[startLoc,endLoc] = getLineColumn(info.messages(1))
Вывод:
startLoc = struct with fields: Line: 2 Column: 5 endLoc = struct with fields: Line: 2 Column: 12
Эти местоположения соответствуют началу и концу вызова функции 'svd(a,0)'
в тексте foo.m
.
Предположим, что вы создаете информационный объект отчета info
в сеансе работы с MATLAB, и затем используете его в другом сеансе работы с MATLAB. Если info.Config
является объектом настройки для автономной генерации кода (coder.CodeConfig
или coder.EmbeddedCodeConfig
), следующее поведение может произойти:
Если хосту - компьютеру MATLAB для второго сеанса не задали аппаратную плату в свойстве info.Config.Hardware
, установленном на нем, параметр конфигурации, info.Config.Hardware
возвращается к своему значению по умолчанию. Значением по умолчанию является []
.
Если хосту - компьютеру MATLAB для второго сеанса не задали набор инструментальных средств в свойстве info.Config.Toolchain
, установленном на нем, параметр конфигурации, info.Config.Toolchain
возвращается к своему значению по умолчанию. Значением по умолчанию является 'Automatically locate an installed toolchain'
.
кодер. Свойства CodeFile | кодер. File Properties | кодер. Функциональные Свойства | кодер. Передайте Свойства | кодер. Свойства метода | кодер. Свойства ReportInfo | кодер. Итоговые Свойства | getLineColumn