主要内容

之间的交互跟踪MATLAB代码和生成的C/ c++代码

这个例子展示了如何在MATLAB之间进行跟踪®源代码和生成的C / C ++代码。源代码和生成代码之间的跟踪可帮助您:

  • 了解代码生成器如何实现您的算法。

  • 调试生成的代码中的问题。

  • 评估生成代码的质量。

如果你有嵌入式编码器®并使生成的代码报告具有可追溯性,可以查看MATLAB源代码和生成的C/ c++代码相邻。当您将指针移动到代码上时,您可以沿着高亮显示的跟踪到相应的生成代码或MATLAB源代码。

创建MATLAB源代码

为了说明交互式可追溯性,该示例为MATLAB函数生成C静态库的报告lpsolve.这就解决了线性规划问题:

  • 最大化y = c * x

  • 受制于A*x<=b

  • 其中x>=0和b>=0

lpsolve.

该示例还使用了一个测试函数lpsolve_test那个呼唤lpsolve.具有代表性的输入值。

lpsolve_test

复制lpsolve.mlpsolve_test.m.到一个可写的文件夹。

拷贝文件(fullfile (docroot,“工具箱”“ecoder”'例子''lpsolve.m'))复制文件(完整文件(docroot、,“工具箱”“ecoder”'例子'“lpsolve_test.m”))

准备代码生成

在生成C/C++代码之前,最好先筛选MATLAB代码,以便为代码生成做好准备。

编码器.CEENER('lpsolve'

代码生成就绪报告表明lpsolve.适用于代码生成。

通过生成和测试MEX函数来检查运行时问题也是一种最佳实践。

  • 要指定输入参数的类型,请将具有代表性的输入值传递给编码基因arg游戏选择。或者,因为您有一个测试函数,您可以使用coder.getArgTypes来确定类型。

  • 要生成和测试MEX函数,请使用以及选择。

c = [2 3 1 1];a = [2 3 1 -1; 1 0 2 1; 0 2 1 1];B = [27; 9; 18];编码基因lpsolve.arg游戏{c A b}以及lpsolve_test
正在运行测试文件:“lpsolve\u test”和MEX函数“lpsolve\u MEX”。x=5 7 0 4 y=35

编码基因成功生成并运行MEX函数。

生成具有可跟踪性的代码生成报告

要生成具有交互式可追溯性的报告:

  • 创建一个coder.EmbeddedCodeConfig对象。的EnableTraceability属性控制的可追溯性。默认情况下,EnableTraceability属性是真正的

  • 通过将代表性输入值传递给arg游戏选择。

  • 使用-报告选择。

cfg = coder.config (“自由”“ecoder”,对);编码基因-配置cfglpsolve.arg游戏{c A b}-报告

访问报告中的跟踪模式

要打开代码生成报告,请单击查看报告

在代码窗格中,你看到了lpsolve.m

要启用跟踪,请在报告选项卡上,单击跟踪代码

您可以看到MATLAB源代码和生成的C代码彼此相邻。

跟踪代码

您可以从MATLAB代码跟踪到C代码或从C代码到MATLAB代码。可追溯的代码标有蓝色,在侧面上追踪和橙色的曲折。当您在可追溯代码中移动指针时,代码在紫色中突出显示,并且您将迹线显示为另一侧的相应代码。通过单击它来选择突出显示的代码,代码变为黄色,即使将指针移离选择时,也可以看到追踪。代码仍然选择,直到您按下Esc或者选择不同的代码。要更改跟踪的起始端,请选择另一端的代码。

在示例报告中探索跟踪。

  1. 在MATLAB代码中,指向-循环,从第38行开始向下滚动,直到整个-loop正在查看。

    可以看到这个符号,它告诉您高亮显示的MATLAB代码有一个不在视图中的跟踪。

    您可以在C代码窗格的单独窗口中看到相应的C代码。

  2. 在C代码窗格中,向下滚动,直到看到对应于循环。

  3. 在MATLAB代码中,将指针移动到循环。突出显示变量,表达式和代码块。

    当您将指针移动到属于较大表达式的一部分的表达式上时,不同颜色的紫色将帮助您在相应的C代码中找到相关的表达式。例如,在第43行,暂停

  4. 在MATLAB代码中,将指针移动回到-从第38行开始的循环。当整个循环以紫色突出显示时,通过单击将其选中。当您将指针移到跟踪之外时,黄色突出显示将标识所选跟踪。

    要清除所选内容,请按Esc或者选择不同的代码。

视图多个痕迹

当代码跟踪到相应源代码或生成代码中的多个位置时:

  • 如果您在正在跟踪的代码上暂停,在代码窗格的顶部,您将看到跟踪的数量。

  • 如果某些迹线不视图,则会看到一个符号,告诉您缺乏视图的迹象。

  • 在“代码”窗格中,如果选择要跟踪的代码,则可以在“代码”窗格顶部选择要查看的跟踪。

在报告中lpsolve.,查看多个轨迹。

  1. 暂停线路36

    在代码窗格的顶部,您可以看到这一行36有两个痕迹。

  2. 选择一行36

    在代码窗格的顶部,您可以看到第一件跟踪的位置。

  3. 要列出所有记录道,请单击记录道右侧的箭头。

查看不同文件的跟踪

在的代码生成报告中lpsolve.,所有来自MATLAB代码的跟踪都会转到一个C文件中lpsolve.c.如果MATLAB代码跟踪到多个C文件,在C代码上面,您会看到一个符号,例如这提供了您可以找到跟踪的附加文件的数量。如果单击符号,则可以选择要查看的文件。如果选择MATLAB代码,则可以选择要查看的跟踪。

同样,上面的MATLAB源代码中,有一个符号如指示高亮显示的C代码跟踪到多个MATLAB文件。

切换源代码和生成代码的位置

  1. 查看lpsolve.c在代码窗格的左侧,在生成的文件列表中,单击lpsolve.c

  2. 要查看代码窗格左侧的MATLAB代码,请单击一个MATLAB函数,例如,lpsolve.

启用代码工具提示和链接

当您不在跟踪模式时:

  • 在MATLAB代码中,如果您指向变量或表达式,则工具提示提供诸如类型的信息。

  • 在C代码中,链接指向代码的其他部分,如类型或函数定义。

当您处于跟踪模式时,要启用MATLAB代码工具提示和C代码链接,请长按Ctrl键.MATLAB代码工具提示仅适用于选定的MATLAB函数。

在报告中lpsolve.,查看变量的类型信息。

  1. MATLAB源代码窗格中,选择支点

  2. 在代码窗格中,按住Ctrl键并在输入参数上暂停

请注意

麦金塔电脑平台,使用命令键而不是Ctrl键

禁用可追溯性

要生成不包含可追溯性的代码生成报告,请执行以下操作:

  • 在一个coder.EmbeddedCodeConfig对象,设置EnableTraceability财产

  • MATLAB编码器™应用程序,设置使代码可追溯性

另请参阅

相关话题