Можно экспортировать информацию о генерации кода к переменной в основной рабочей области 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) c = svd(a,0); b = sum(c); end
Сгенерируйте MEX-функцию для foo
. Задайте вход a
как матрица переменного размера, первая размерность которой имеет верхнюю границу 3
и второе измерение имеет верхнюю границу 5
. Экспорт генерация кода сообщает информацию переменной info
в вашем основном рабочем пространстве MATLAB.
codegen -config:mex foo -args {coder.typeof(ones(1,1),[3 5],[1 1])} -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: [21×1 coder.CodeFile] Functions: [1×1 coder.Function] Messages: [0×1 coder.Message] CodeInsights: [1×1 coder.Message] BuildLogs: [1×1 coder.BuildLog]
Смотрите каждое свойство info
отдельно.
info.Summary
coder.Summary
возразите, чьи свойства содержат информацию об успехе генерации кода, дате и времени генерации кода, пути выходного файла, процессора и версии MATLAB Coder.
Summary with properties: Success: true Date: '12-Apr-2019 17:36:35' OutputFile: 'C:\coder\R2019b\ReportInfo Object\foo_mex.mexw64' Processor: 'Generic->MATLAB Host Computer' Version: 'MATLAB Coder 4.2 (R2019b)'
Если вы генерируете автономный код, 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
объекты. Каждый элемент массива содержит текст, путь и расширение сгенерированного файла. В этом примере это - 21
- 1
массив, потому что существует 25
сгенерированные файлы.
21×1 CodeFile array with properties: Text Path Extension
info.Functions
массив coder.Function
объекты. Каждый элемент массива содержит следующую информацию о функции MATLAB или методе:
Имя и специализация.
coder.CodeFile
объект для входного файла, который содержит функцию или метод. Этот объект также содержится в info.InputFiles
.
Индекс начала и конца функции или метода в тексте файла.
В этом примере, info.Functions
имеет один элемент, потому что существует только одна функция MATLAB во входном файле foo.m
.
Function with properties: Name: 'foo' Specialization: 0 File: [1×1 coder.CodeFile] StartIndex: 1 EndIndex: 52
info.Messages
массив coder.Message
объекты, которые содержат ошибку генерации кода, предупреждение и информационные сообщения. В этом примере нет таких сообщений. Так, это свойство является пустым массивом.
0×1 Message array with properties: Identifier Type Text File StartIndex EndIndex
info.CodeInsights
массив coder.Message
объекты, которые содержат понимание кода. Это понимание является сообщениями о потенциальных проблемах в сгенерированном коде, таких как разности потенциалов из кода MATLAB и потенциальных упорядоченных по строкам проблем размещения массивов. Эти сообщения также появляются в отчете генерации кода вкладка Code Insights. Каждый элемент массива содержит следующую информацию об одном понимании кода:
Идентификатор и тип сообщения.
Текст сообщения.
Категория и подкатегория, которой принадлежит сообщение.
coder.File
или coder.CodeFile
объект для входного файла, который произвел сообщение.
Индекс начала и конца части текста файла, который произвел сообщение.
В этом примере существует одно понимание кода.
Message with properties: Identifier: 'Coder:potentialDifferences:autoDimIncompatibility' Type: 'Info' Text: 'In the generated code, the dimension to operate along is selected automatically, and might be different from MATLAB. Consider specifying the working dimension explicitly as a constant value.' Category: 'PotentialDifferencesFromMATLAB' File: [1×1 coder.CodeFile] StartIndex: 41 EndIndex: 46
Чтобы индексировать в текст файла, используйте StartIndex
и EndIndex
свойства.
info.CodeInsights.File.Text(41:46)
'sum(c)'
info.BuildLogs
массив coder.BuildLog
объекты, которые содержат журналы сборки, произведенные во время генерации кода. Журналы сборки содержат компиляцию и соединение ошибок и предупреждений. Те же журналы сборки также появляются в отчете генерации кода вкладка Build Logs. Каждый элемент массива содержит тип и текст одного журнала сборки. В этом примере существует один журнал сборки типа 'Target'
.
Создайте информационный объект отчета для процесса генерации кода, который перестал работать. Смотрите свойства этого объекта.
Задайте функцию 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] CodeInsights: [0×1 coder.Message] BuildLogs: [0×0 coder.BuildLog]
Смотрите info.Summary
и info.Messages
свойства.
info.Summary
указывает, что генерация кода перестала работать.
Summary with properties: Success: false Date: '15-Apr-2019 12:12:12' OutputFile: 'C:\coder\R2019b\ReportInfo Object\codegen\mex\foo' Processor: 'Generic->MATLAB Host Computer' Version: 'MATLAB Coder 4.2 (R2019b)'
info.Messages
массив coder.Message
объекты, которые содержат ошибку генерации кода, предупреждение и информационные сообщения. Каждый элемент массива содержит следующую информацию об одном сообщении:
Идентификатор и тип сообщения.
Текст сообщения.
coder.CodeFile
объект для входного файла, который вызвал сообщение.
Индекс начала и конца части текста файла, который вызвал сообщение.
В этом примере существует два сообщения об ошибке. Так, info.Messages
2
- 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'
.
кодер. Свойства BuildLog | кодер. Свойства CodeFile | кодер. File Properties | кодер. Функциональные Свойства | кодер. Передайте Свойства | кодер. Свойства метода | кодер. Свойства ReportInfo | кодер. Итоговые Свойства | getLineColumn