Можно экспортировать информацию о генерации кода к переменной в основной рабочей области 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
Extensioninfo.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
EndIndexinfo.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: 33StartIndex и 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