多C++文件场景下如何使用gcov生成代码覆盖率报告
多文件C++项目gcov覆盖率报告生成方案
要生成gcov覆盖率报告,编译、链接两个阶段都需要添加覆盖率编译参数,这是分目标文件编译方案失败的核心原因,完整操作步骤如下:
1. 编译生成带覆盖率标记的目标文件
编译时添加-g(输出调试信息)、-O0(关闭编译优化,保证覆盖率统计准确)、--coverage(开启覆盖率统计支持)参数:
- 编译
one.cpp:g++ -c -g -O0 --coverage one.cpp -o one.o - 编译
main.cpp:g++ -c -g -O0 --coverage main.cpp -o main.o
编译完成后每个.o目标文件会对应生成.gcno后缀的统计基础文件。
2. 链接生成可执行文件
链接阶段必须同样添加--coverage参数,不能省略:g++ -g -O0 --coverage one.o main.o -o cov_test
3. 运行可执行文件生成覆盖率统计数据
./cov_test
运行完成后每个源文件会对应生成.gcda后缀的执行统计数据文件。
4. 生成gcov覆盖率报告
直接对源文件执行gcov命令即可生成文本格式的覆盖率报告:
- 生成
one.cpp的覆盖率报告:gcov one.cpp - 生成
main.cpp的覆盖率报告:gcov main.cpp
生成的.gcov文件中会标注每一行代码的执行次数,未被执行的代码行前会标记#####。
内容的提问来源于stack exchange,提问作者Cod3r
相关产品推荐
相关产品推荐

