您可以将有关代码生成的信息导出到基础MATLAB中的一个变量中®工作区。该变量包含编码器。ReportInfo
对象,其属性包含以下信息:
代码生成摘要,包括关于代码生成成功、日期和时间、输出文件的路径、处理程序、版本的信息MATLAB编码器™,在代码生成、工具链和构建配置期间检出的工具箱许可证。
代码生成配置对象。
输入文件的文本、路径和扩展名。
生成文件的文本、路径和扩展名。
对于代码生成中涉及的所有MATLAB函数和方法:名称、专门化、文件、开始索引和结束索引。
代码生成错误、警告和信息消息。
代码洞察,指出生成的代码的潜在问题。
在代码生成期间生成的构建日志。
您可以使用报告信息对象以编程方式访问有关代码生成的信息。例如,您可以在MATLAB命令行中显示代码生成消息。要执行此操作,请在构建脚本中访问包含这些消息的属性。
假设您希望将代码生成报告信息导出到变量信息
在你的基本MATLAB工作空间。做以下其中之一:
在MATLAB编码器应用程序,调试选项卡,设置导出报告信息到变量转换为变量名信息
.
在命令行中,使用codegen
命令-reportinfo
选择。的后面指定变量名-reportinfo
选择。
codegenmyFunction-reportinfo信息
在命令行中,设置代码配置对象属性ReportInfoVarName
到字符向量“信息”
.
生成并打开代码生成报告。点击出口报告信息.在对话框中,指定变量名信息
.
为成功的代码生成过程创建报告信息对象。检查这个对象的属性。
定义MATLAB函数喷火
:
函数B = foo(a) c = svd(a,0);b =和(c);结束
为生成一个MEX函数喷火
.指定的输入一个
作为一个变尺寸矩阵,其第一个维数的上界为3.
第二个维度的上界是5
.将代码生成报告信息导出到变量信息
在你的基本MATLAB工作空间。
codegen配置:墨西哥人喷火arg游戏{coder.typeof(的(1,1),[3 - 5],[1])}-reportinfo信息
代码生成器生成MEX函数foo_mex
.代码生成器还创建报告信息对象信息
在MATLAB的基本工作空间。
检查报表信息对象的结构。该对象有八个属性,它们包含有关代码生成的信息。
带有属性的ReportInfo:摘要:[1×1编码器。配置:[1×1编码器。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]
检查信息
分开。
信息。总结
是一个编码器。总结
对象的属性包含有关代码生成成功、代码生成日期和时间、输出文件的路径、处理程序、在代码生成期间签出的工具箱许可以及版本的信息MATLAB编码器.
Date: '08-May-2020 09:15:07' OutputFile: 'C:\编码器\R2020b\许可证发现\foo_mex。mexw64' Processor: 'Generic->MATLAB Host Computer' Version: 'MATLAB Coder 5.1 (R2020b)' ToolboxLicenses: [1×0 string]
如果您生成独立的代码,信息。总结
还包含关于工具链和构建配置的信息。
信息。配置
是代码配置对象。在本例中,因为您为喷火
,这是一个编码器。MexCodeConfig
对象。
信息。InputFiles
是编码器。CodeFile
对象。数组的每个元素都包含代码生成输入文件的文本、路径和扩展名。在这个例子中,数组只有一个元素,因为只有一个输入文件foo.m
.
CodeFile with properties: Text: 'function b = foo(a)←↵b = svd(a,0);←↵end←↵' Path: 'C:\coder\R2019a\Report Info Object\foo. txt ';m”扩展:“打烊”
信息。GeneratedFiles
是编码器。CodeFile
对象。数组的每个元素都包含生成文件的文本、路径和扩展名。在这个例子中,它是a21
——- - - - - -1
数组,因为25
生成的文件。
21×1带有属性的CodeFile数组:文本路径扩展
信息。功能
是编码器。函数
对象。数组中的每个元素都包含以下关于MATLAB函数或方法的信息:
名称和专业化。
的编码器。CodeFile
对象,用于包含该函数或方法的输入文件。该对象也包含在信息。InputFiles
.
函数或方法在文件文本中的起始和结束索引。
在这个例子中,信息。功能
有一个元素,因为在输入文件中只有一个MATLAB函数foo.m
.
Name: 'foo'特化:0文件:[1×1编码器。StartIndex: 1 EndIndex: 52
信息。消息
是编码器。消息
对象,该对象包含代码生成错误、警告和信息消息。在本例中,没有这样的消息。这个属性是一个空数组。
0×1具有属性的消息数组:标识符类型文本文件StartIndex EndIndex
信息。CodeInsights
是编码器。消息
包含代码洞察的对象。这些见解是关于生成代码中的潜在问题的消息,如MATLAB代码的潜在差异和潜在的行主数组布局问题。这些消息也出现在代码生成报告中代码的见解选项卡。数组的每个元素都包含关于一个代码洞察的以下信息:
消息的标识符和类型。
信息的文本。
邮件所属的类别和子类别。
的编码器。文件
或编码器。CodeFile
对象,用于生成消息的输入文件。
生成消息的文件文本部分的开始和结束索引。
在这个例子中,有一个代码洞察。
在生成的代码中,要操作的维度是自动选择的,可能与MATLAB不同。考虑将工作维度明确指定为常量。”文件:[1×1编码器。StartIndex: 41 EndIndex: 46
要在文件的文本中建立索引,请使用StartIndex
和EndIndex
属性。
info.CodeInsights.File.Text (41:46)
“和(c)”
信息。BuildLogs
是编码器。BuildLog
对象,该对象包含在代码生成期间生成的构建日志。构建日志包含编译和链接错误和警告。同样的构建日志也出现在代码生成报告中建立日志选项卡。数组的每个元素都包含一个构建日志的类型和文本。在本例中,有一个类型为的构建日志“目标”
.
为检查工具箱许可证的代码生成过程创建报告信息对象。检查这个对象的属性。
定义MATLAB函数酒吧
调用函数位差
(统计学和机器学习工具箱)和鸡尾酒疗法
(小波工具箱).
函数[u, v, w] =酒吧(x)% # codegenu =差(x);[v, w] = haart (x);结束
生成C源代码酒吧
.将输入参数的类型指定为1
——- - - - - -One hundred.
双精度的行向量。将代码生成报告信息导出到变量信息
在你的基本MATLAB工作空间。
codegen- c酒吧arg游戏{0 (1100)}-reportinfo信息
代码生成成功。检查info.Summary.ToolboxLicenses
财产。
1×2 string array "statistics_toolbox" " wavet_toolbox "
此属性表明在代码生成期间检出了Statistics和Machine Learning Toolbox™和小波工具箱™许可证。
请注意
如果生成MEX代码,那么在加载MEX函数时将再次签出这些许可证。
如果生成静态库或动态链接库,则只在代码生成期间检出工具箱许可证。代码生成器不会将许可签出写入生成的独立代码中。
为失败的代码生成过程创建报告信息对象。检查这个对象的属性。
定义MATLAB函数喷火
:
函数B = foo(a) B = svd(a,0);结束
为生成一个MEX函数喷火
.指定的输入一个
作为字符串标量。将代码生成报告信息导出到变量信息
在你的基本MATLAB工作空间。
codegen配置:墨西哥人喷火arg游戏{“字符串标量”}-reportinfo信息
代码生成失败,因为字符串标量不是MATLAB函数的有效输入圣言会
.代码生成器创建报告信息对象信息
在MATLAB的基本工作空间。
检查信息。总结
和信息。消息
属性。
信息。总结
指示代码生成失败。
输出文件:'C: coder\R2020b\License discovery\codegen\mex\foo' Processor: 'Generic->MATLAB Host Computer' Version: 'MATLAB coder 5.1 (R2020b)' ToolboxLicenses: [1×0 string]
信息。消息
是编码器。消息
对象,该对象包含代码生成错误、警告和信息消息。数组中的每个元素都包含关于一条消息的以下信息:
消息的标识符和类型。
信息的文本。
的编码器。CodeFile
对象,用于生成该消息的输入文件。
导致消息的文件文本部分的开始和结束索引。
在本例中,有两个错误消息。所以,信息。消息
是一个2
——- - - - - -1
数组中。
2×1具有属性的消息数组:标识符类型文本文件StartIndex EndIndex
查看数组的第一个元素info.Messages (1)
.
带有属性的消息:Identifier: 'Coder:toolbox:unsupportedClass' T金宝appype: 'Error' Text: 'Function 'svd'未为类'string'的值定义。'文件:[1×1编码器。CodeFile] StartIndex: 26 EndIndex: 33
StartIndex
和EndIndex
属性索引到文件的文本。info.Messages (1) .File.Text (26:33)
“圣言(0)'
要手动检查输入文件的文本,请按对应的行号和列号StartIndex
和EndIndex
值是有用的。使用getLineColumn
函数获取此信息。这个函数返回两个结构,其中包含对应的行号和列号StartIndex
和EndIndex
分别。
在前面的例子中,要手动检查的部分foo.m
导致第一个错误消息,显示文件的文本。
info.Messages (1) .File.Text
文件的文本显示为:
'函数b = foo(a) b = svd(a,0);结束的
访问导致第一个错误消息的文本部分的行号和列号。
[startLoc, endLoc] = getLineColumn (info.messages (1))
的输出是:
startLoc = struct with fields: Line: 2 Column: 5 endLoc = struct with fields: Line: 2 Column: 12
这些位置对应于函数调用的开始和结束“圣言(0)'
在foo.m
.
假设您创建了一个报告信息对象信息
然后在另一个MATLAB会话中使用它。如果信息。配置
是用于独立代码生成的配置对象(编码器。CodeConfig
或编码器。EmbeddedCodeConfig
),则可能发生以下行为:
如果MATLAB主机对于第二次会话没有指定的硬件板info.Config.Hardware
属性,配置参数info.Config.Hardware
恢复为默认值。默认值为[]
.
如果用于第二会话的MATLAB主机没有在中指定的工具链info.Config.Toolchain
属性,配置参数info.Config.Toolchain
恢复为默认值。默认值为“自动定位安装的工具链”
.
编码器。BuildLog属性|编码器。ReportInfo属性|编码器。摘要属性|编码器。文件Properties|编码器。CodeFile属性|编码器。函数属性|编码器。方法属性|编码器。消息属性|getLineColumn