0%

gcov工具统计C语言代码覆盖率

gcov 是一个测试覆盖程序。将它与 gcc 配合使用,可以分析您的程序,帮助创建更高效、运行更快的代码,并发现程序中未经测试的部分。您可以将 gcov 用作剖析工具,帮助发现优化工作对代码的最佳影响。您还可以将 gcov 与其他剖析工具 gprof 一起使用,以评估代码中哪些部分占用了最多的计算时间。

剖析工具可帮助您分析代码的性能。使用 gcov 或 gprof 等剖析器,您可以找到一些基本的性能统计信息,例如

  • 每行代码的执行频率
  • 实际执行了哪些代码行
  • 每段代码使用了多少计算时间

编译

编译的程序的时候 gcc 选项需要加入选项

1
CFLAGS += -fprofile-arcs -ftest-coverage

编译时,每个.c源文件都会生成.gcno文件。执行可执行文件时,每一个源文件都会生成.gcda文件。

收集覆盖率信息

1
2
3
4
5
6
7
8
# 收集覆盖率信息
lcov -c -d ./ -d ../proto -o gcov.info

# 扩展可以直接-a xxx.info 统一加入到 test.info 中
lcov -a gcov.info -o test.info

# 生成html方便查看,输出到 code_coverage 目录中
genhtml test.info -o code_coverage

效果图

image-20240311140442988

安装

下载对应的源码包,下载地址

image-20240312105938047

问题

  • 报错缺少Time::HiRes模块

image-20240312110305365

解决方案:yum -y install perl-Time-HiRes

image-20240312110505583

refernece

[1] https://gcc.gnu.org/onlinedocs/gcc/Gcov.html

[2] https://blog.csdn.net/jxzdsw/article/details/114292914

小主,路过打个赏再走呗~