ZHCUAQ1F july 2015 – april 2023
程序缓存布局工具 clt6x 采用加权调用图形式的动态分析信息来生成首选函数顺序命令文件。该文件可用于在重新创建应用程序的过程中在链接时引导函数布置。
有几种方式可以收集该动态分析信息。例如,如果在硬件上运行应用程序,也许可以收集 PC 间断跟踪。然后可以对间断跟踪进行后处理,从而构建 clt6x 的加权调用图输入信息。
此处介绍的用于收集动态分析信息的方法依赖于 C6000 代码生成工具中的路径分析功能。具体的工作原理如下:
使用 --gen_profile_info 指示编译器沿着每个函数的执行路径将计数器嵌入到代码中。
只需编译,请使用:
cl6x options --gen_profile_info src_file(s) |
要编译和链接,请使用:
cl6x options --gen_profile_info src_file(s) -run_linker --library lnk.cmd |
当应用程序运行时,通过 --gen_profile_info 嵌入应用程序的计数器会跟踪通过函数遍历特定执行路径的次数。在这些计数器中收集的数据写入名为 pprofout.pdat 的分析数据文件。
自动生成分析数据文件。
一旦有了分析数据文件后,该文件将通过分析数据解码器工具 pdd6x 进行解码,如下所示:
pdd6x -e=instrumented app out file -o=pprofout.prf pprofout.pdat |
使用 pdd6x 生成 .prf 文件,然后将其输入到应用程序的重新编译中。该应用程序使用分析信息生成加权调用图输入数据。
--analyze 编译器选项能行编译器生成加权调用图或代码覆盖率分析信息。相应的语法如下:
--analyze=callgraph | 指示编译器生成加权调用图信息。 | |
--analyze=codecov | 指示编译器生成代码覆盖率信息。此选项替换了先前的 --codecov 选项。 |
编译器还支持新的 --analyze_only 选项,该选项指示编译器在生成分析信息后停止编译。此选项替换了先前的 --onlycodecov 选项。
要利用收集到的动态分析信息,请使用 --analyze=callgraph 选项和 --use_profile_info 选项重新编译应用程序的源代码:
cl6xoptions -mo --analyze=callgraph --use_profile_info=pprofout.prf src_file(s) |
使用 -mo 指示编译器为每个函数生成代码到自己的子段中。此选项为链接器提供了直接控制给定函数的代码位置的方法。
编译器生成CSV 文件,该文件包含在命令行上指定的每个源文件的加权调用图信息。如果这样的 CSV 文件已经存在,则新的调用图分析信息将附加到现有的 CSV 文件中。然后这些 CSV 文件将输入到缓存布局工具 (clt6x) 中,为应用程序生成首选函数顺序命令文件。
更多有关编译器生成的 CSV 文件(包含加权调用图信息)内容的详细信息,请参阅节 4.11.6。