普通场景源码扫描
内存一致性功能只支持在鲲鹏平台环境上运行,不支持x86平台。
本示例指导用户通过扫描源代码,识别其中的内存一致性问题,并根据该工具自动分析出的需修改的代码内容进行修改。
- 源码规模过大可能会导致占用资源过多,建议代码量不超过10万行;每次创建
内存一致性检查 任务,都需要重新上传源码文件。 - 多条编译命令以“;”隔开。编译命令支持make、cmake、configure、shell命令以及shell脚本,其中使用make命令时不支持make install;构建命令或者构建脚本不能对用户空间(/opt/DevKit/workspace/用户名/)之外的目录和文件进行创建或修改操作。
扫描源代码
- 从Github或Gitee代码样例common获取待使用的软件源码包。
下载的源码包为devkitdemo-main.zip,解压后的“./devkitdemo-main/Porting_advisor/testdemo/weak_consistency/common”为源码迁移的待扫描代码。
- 生成BC文件。
- 将获取的待扫描文件common上传至已安装亲和分析命令行工具的服务器,将Makefile文件中gcc修改为gclang。
gcc -o $@ common.o -lpthread
修改后:
gclang -o $@ common.o -lpthread
- 执行以下命令,扫描修改后的源码文件,并生成BC文件。
devkit advisor bc-gen -i /home/software/Porting_advisor/testdemo/weak_consistency/common/ -o /home/report -c make
显示信息如下:
Executing static memory consistency check task, please wait... Current progress: ################################# [100%] Scanned time: 2024/06/05 01:06:59 Configuration: Scan source code path: /home/software/Porting_advisor/testdemo/weak_consistency/common Generate bc files path: /home/report Task Timeout Interval: The timeout period is not set. Log level: info Summary: Scanned all source files, there are 1 bc files generated. For the detail information, please check /home/report/bc-gen_20240605010659_f1bd
- -i:需要生成BC文件的源码文件夹路径。
- -o:生成BC文件的存放路径,需要有写权限。报告默认存放在当前路径下,名称默认为“模块名_时间戳”。
- -c:源码的构建命令。
- 将获取的待扫描文件common上传至已安装亲和分析命令行工具的服务器,将Makefile文件中gcc修改为gclang。
- 进入鲲鹏DevKit,在左侧列表中单击“亲和分析 > 内存一致性静态检查”,检查模式选择“静态检查”。
单击“源码文件存放路径”的“上传”,上传已下载的common文件夹,并单击输入框,选择源代码common,然后单击“BC文件存放路径”的“上传”,上传生成的BC文件文件夹,并单击输入框,选择文件夹,如图1所示。
- 单击“开始检查”,执行内存一致性检查任务,并得到扫描分析报告,如图2所示。
父主题: 示例3:内存一致性静态检查