主要内容

之间的交互式追踪马铃薯代码和生成的C / C ++代码

此示例显示如何在MATLAB之间跟踪®源代码和生成的C / C ++代码。源代码和生成代码之间的跟踪可帮助您:

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

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

  • 评估生成的代码的质量。

如果您有嵌入式编码器®并启用具有可追溯性的代码生成报告的生产,您可以查看Matlab源代码并在彼此旁边生成C / C ++代码。将指针移动到代码上时,您可以遵循突出显示的痕迹到相应的生成代码或源MATLAB代码。

创造马铃薯源代码

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

  • 最大化y = c * x

  • 受* x <= b

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

lpsolve.

该示例还使用测试功能lpsolve_test.那个呼叫lpsolve.具有代表性输入值。

lpsolve_test.

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

COPYFILE(FullFile(Docroot,'工具箱''ecoder''例子''lpsolve.m'))COPYFILE(FullFile(Docroot,'工具箱''ecoder''例子''lpsolve_test.m')))

准备代码生成

在生成C / C ++代码之前,它是一个最佳练习,用于屏蔽MATLAB代码以进行代码生成准备。

编码器.CEENER('lpsolve'

代码生成准备情况报告表示lpsolve.适用于代码生成。

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

  • 要指定输入参数的类型,请将代表输入值传递给Codegen.- args.选项。或者,因为您有测试功能,可以使用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];Codegen.lpsolve.-  args.{出租车}-测试lpsolve_test.
运行测试文件:使用MEX函数'LPSOLVE_MEX''lpsolve_test'。x = 5 7 0 4 y = 35

Codegen.成功生成并运行MEX函数。

产生具有可追溯性的代码生成报告

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

  • 创建一个Coder.embeddedCodeConfig目的。这促进可筛选物业控制可追溯性。默认情况下,促进可筛选属性是真的

  • 通过将代表输入值传递给的输入参数的类型来指定输入参数的类型- args.选项。

  • 通过使用使用该报告的生产-报告选项。

cfg = coder.config('lib''ecoder', 真的);Codegen.-Config.CFG.lpsolve.-  args.{出租车}-报告

在报告中访问跟踪模式

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

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

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

您可以看到Matlab源代码和彼此旁边的生成的C代码。

跟踪代码

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

探索示例报告中的跟踪。

  1. 在matlab代码中,指向尽管- 从第38行开始启动并向下滚动至整个尽管-loop正在查看。

    您看到此符号告诉您突出显示的MATLAB代码具有一个不视图中的跟踪。

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

  2. 在C代码窗格中,向下滚动,直到您看到对应于的C代码尽管环形。

  3. 在MATLAB代码中,将指针移动在不同的语法元素上尽管环形。突出显示变量,表达式和代码块。

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

  4. 在MATLAB代码中,将指针移回尽管- 从第38行开始的中间。当在紫色中突出显示整个循环时,单击选择它。将指针移动到跟踪外部时,黄色突出显示标识所选跟踪。

    要清除选择,请按退出或选择不同的代码。

查看多个痕迹

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

  • 如果在代码窗格的顶部暂停您正在跟踪的代码,则会看到迹线的数量。

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

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

在报告中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.并暂停输入参数一世

笔记

在A.Macintosh.平台,使用命令钥匙而不是Ctrl.

禁用可追溯性

要生成不包括可追溯性的代码生成报告:

  • 在一个Coder.embeddedCodeConfig对象,设置促进可筛选财产错误的

  • 在里面Matlab Coder™应用程序,集启用代码可追溯性

也可以看看

相关话题