代码跟踪(可追溯性)使用超链接在生成的代码行和模型中相应的元素之间导航。要找到代码行及其对应的元素,您还可以右键单击模型中的一个或多个元素。这个双向导航是双向可追溯性。
使用代码跟踪,您可以:
验证生成的代码是否如您所期望的那样。您可以确定与一行代码对应的模型元素。您可以跟踪来自已评审或未评审的不同元素的代码。
验证生成的代码满足设计需求。您可以将需求链接到模型元素,并使用代码跟踪来验证为模型元素生成的代码是否满足分配的需求。
当您从Simulink生成代码时金宝app®模型,可跟踪性信息嵌入到生成的代码中,除非明确指定。可跟踪性信息包括用于在生成的源代码和模型之间进行跟踪的链接。你可以通过以下方式查看生成的代码:
生成的代码包括支持代码跟踪的资源:金宝app
代码元素超链接(当您将光标放在代码上时用下划线表示),用于跟踪生成的代码中的变量或类型,直到它们在头文件中的声明或定义。
代码注释中的标记,用于标识生成代码行的模型中的元素。
行号超链接,链接到生成该行代码的模型组件。
Simulink块和这些statflow支持双向跟踪金宝app金宝app®元素:
州
转换
状态转换表
MATLAB函数。从MATLAB函数调用的外部代码不支持可金宝app跟踪性。
真值表块
图形化功能
金宝app仿真软件的功能
这些statflow元素支持一个方向的可跟踪性:金宝app
事件(code-to-model)
代码到模型的可跟踪性适用于显式事件,但不适用于隐式事件。在生成的代码中单击显式事件的超链接将突出显示该项内容窗格中的。
连接(模型到代码)
模型到代码的可追溯性适用于至少有一个输出转换的节点。在statflow Editor中右键单击这样的连接,会突出显示与该连接的第一个传出转换对应的代码行。
有关更多信息,请参见<一个href="//www.tatmou.com/au/help/ecoder/ug/trace-stateflow-elements-in-generated-code.html" class="a">跟踪生成代码中的状态流元素一个>.
MATLAB函数直接插入到Simulink模型中的块也是可跟踪的。金宝app有关更多信息,请参见<一个href="//www.tatmou.com/au/help/ecoder/ug/using-traceability-in-matlab-function-blocks.html" class="a">在MATLAB函数块中使用可追溯性一个>.
打开模型<一个href="//www.tatmou.com/au/help/ecoder/ug/matlab:rtwdemo_comments" target="_blank">rtwdemo_comments
.
打开嵌入式编码器®建立模型。在C代码选项卡上,单击构建.
默认情况下HTML代码生成报告是打开的。要使用报告,请看<一个href="//www.tatmou.com/au/help/ecoder/ug/verify-generated-code-by-using-code-tracing.html" class="intrnllnk">代码生成报告一个>.
在code透视图的code视图中查看生成的代码。
通过使用Code视图顶部的下拉列表在生成的源文件之间进行切换。
源代码包含可跟踪性信息,如超链接注释、行号、变量和操作符。将光标放在或单击注释或行号超链接上。Simu金宝applink Editor在模型中突出显示相应的块或块。
要突出显示模型中某个块生成的代码,请选择该块。代码块生成的代码在code视图中突出显示。
要打开引用模型的生成代码,请打开引用模型并在code视图中查看生成的代码。
打开模型<一个href="//www.tatmou.com/au/help/ecoder/ug/matlab:rtwdemo_comments" target="_blank">rtwdemo_comments
.
打开嵌入式编码器应用程序C代码选项卡上,单击设置打开“配置参数”对话框。选择<一个href="//www.tatmou.com/au/help/rtw/ref/create-code-generation-report.html" class="a">创建代码生成报告如果尚未选中。默认情况下,<一个href="//www.tatmou.com/au/help/rtw/ref/open-report-automatically.html" class="a">自动打开报告,<一个href="//www.tatmou.com/au/help/ecoder/ref/code-to-model.html" class="a">Code-to-model,<一个href="//www.tatmou.com/au/help/ecoder/ref/model-to-code.html" class="a">模型到代码的被选中。
如果您的模型包含引用的模型,并且您希望为引用的模型的代码生成报告启用可跟踪性,那么对每个引用的模型重复前面的步骤。
构建的模型。在C代码选项卡上,单击构建.构建过程在MATLAB web浏览器中打开代码生成报告。
在左侧导航窗格中,选择一个源代码文件。右边窗格中的源代码和行号包含到模型中的块的超链接。
单击注释或行号超链接。Simu金宝applink Editor显示并突出显示模型中相应的一个或多个块。
要突出显示模型中某个块生成的代码,右键单击该块并选择C / c++代码>导航到C/ c++代码.然后在HTML代码生成报告中突出显示为该块生成的代码。要突出显示所选择的多个块的生成代码,请按住转变键,选择多个块,然后右键单击任何一个块来选择C / c++代码>导航到C/ c++代码.然后在HTML代码生成报告中突出显示为块生成的代码。
如果您的模型中有一个引用的模型,在左侧导航窗格中,在参考模型,单击指向引用模型的链接。参考模型的代码生成报告现在显示在MATLAB web浏览器中。
在左侧导航窗格中,您可以单击回来按钮返回上一个代码生成报告。
跟踪标记出现在生成代码的相应行上面的注释中。标签的格式为<
.系统
>/block_name
是下列情况之一:系统
文本根
由Simulink引擎分配的唯一系统编号金宝app
源块的名称。block_name
代码生成器在生成的头文件的注释部分记录模型的标记
.例如,这个注释出现在模型的头文件中,模型
.h喷火
它有一个子系统外
还有一个嵌套子系统内心的
:
/*这是这个模型的系统层次结构。* *: foo * : foo/Outer * : foo/Outer/Inner */
这段代码在生成的代码行上面显示了一个标记注释。源代码模型的根级的Gain块生成以下代码:
/*获取:'/UnDeadGain1' */ rtb_UnDeadGain1_h = dead_gain_U. txtIn1 * dead_gain_P.UnDeadGain1_Gain;
这段代码在生成的代码行上面显示了一个标记注释。在源代码模型根级以下一级的子系统中的一个Gain块生成以下代码:
/*增益:'/增益' */ dead_gain_B。temp0 * = (dead_gain_P.s1_Gain_Gain);
生成的代码提供了生成代码中的操作符与Simulink块、statflow元素或MATLAB函数块之间的可跟踪性。金宝app
要通过使用操作符可追溯性来验证生成的代码,在生成的代码中,单击操作符超链接以突出显示模型中的源块。
支持这些操作符。金宝app
符类型 | 运营商 |
---|---|
算术 | + ,- ,* ,/ ,% |
+ = ,- = ,* = ,/ = ,% = |
|
++ ,-- (前缀和后缀) |
|
逻辑 | ! ,&& ,|| |
关系 | == ,! = ,< ,> ,< = ,>= |
位 | ~ ,| ,^ ,& ,>> ,<< |
& = ,^ = ,| = ,< < = ,> > = |
|
有条件的 | ?: |
不支持这些操作符。金宝app
符类型 | 操作符的例子 |
---|---|
赋值运算符 | = |
和指针操作符的成员 | 数组下标:一个[b] |
地址和指针解引用:和 ,*一个 |
|
成员:a.b ,a - b > |
|
其他运营商 | 函数调用中的括号:foo (a, b) |
逗号:一个 ,b |
|
范围解析:b:: |
|
演员:类型(一) |
|
新 ,新[] |
|
删除 ,删除[] |
这些限制适用于由Embedded Coder软件生成的报告:
在以下条件下,如果块名称包含以下内容,则对块禁用模型到代码的可跟踪性:
单引号('
).
星号(*
),这会导致相对于模型中其他名称的名称混淆。如果在块名称中或在块名称的末尾,在斜杠(/
).
这个角色y
(char (255)
).
如果块名包含换行符(\ n
),为块路径超链接生成的代码注释将换行符替换为一个空格以提高可读性。
你不能跟踪表示这些子系统类型的块到生成的代码:
虚拟子系统
戴面具的子系统
由于优化而删除代码的非虚拟子系统
如果您不能在子系统级别跟踪子系统,那么您可以跟踪子系统中的单个块。
如果您在一个不同于用于生成代码的平台上打开一个模型,那么您就不能使用模型到代码和代码到模型的可跟踪性。
中生成的文件无法使用内联跟踪shared_utils
文件夹中。