[其他ST产品] 基于STM32CubeIDE的GCC覆盖率配置

[复制链接]
107|1
classroom 发表于 2025-10-29 13:34 | 显示全部楼层 |阅读模式
1. 启用GCC覆盖率选项
步骤1:修改项目属性
右键项目 > Properties > C/C++ Build > Settings > Tool Settings > MCU GCC Compiler > Miscellaneous。
添加以下选项:
-fprofile-arcs -ftest-coverage
在MCU GCC Linker > Miscellaneous中添加:
--coverage
步骤2:确保调试信息生成
在MCU GCC Compiler > Debugging中勾选Generate debugging information(-g)。
2. 生成覆盖率数据
编译项目:执行全量编译(Build Project),生成带覆盖率的二进制文件。
运行程序:
通过ST-Link将程序下载到STM32L4。
运行目标功能(确保覆盖所有需测试的代码路径)。
导出数据:
覆盖率数据存储在Flash或RAM中,需通过调试器读取:
停止调试会话。
在STM32CubeIDE中打开Memory Browser(Window > Show View > Memory Browser)。
读取.gcda文件存储地址(通常由链接器脚本指定,如0x080FFFFC)。
3. 生成覆盖率报告
方法1:使用gcov
将.gcda和.gcno文件从目标板复制到PC(通过ST-Link的Read Memory功能)。
运行命令:
bash
gcov -o <objdir> <sourcefile.c>
生成.gcov文件,包含行覆盖率、分支覆盖率等信息。
方法2:使用lcov生成HTML报告
安装lcov(Linux/macOS):
bash
sudo apt-get install lcov  # Ubuntu/Debian
收集覆盖率数据:
bash
lcov --capture --directory <objdir> --output-file coverage.info
生成HTML报告:
bash
genhtml coverage.info --output-directory coverage_report
打开coverage_report/index.html查看可视化报告。
xinxianshi 发表于 2025-10-29 20:16 | 显示全部楼层
什么是覆盖率啊,用GCC不是就直接用了吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

554

主题

3525

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部