gcov

Gcov是进行代码运行的覆盖率统计的工具,它随着gcc的发布一起发布的,它的使用也很简单,需要在编译和链接的时候加上-fprofile-arcs -ftest-coverage生成二进制文件,gcov主要使用.gcno和.gcda两个文件,.gcno是由-ftest-coverage产生的,它包含了重建基本块图和相应的块的源码的行号的信息。.gcda是由加了-fprofile-arcs编译参数的编译后的文件运行所产生的,它包含了弧跳变的次数和其他的概要信息。gcda文件的生成需要先执行可执行文件才能生成。生成gcda文件之后执行命令gcov *.cpp就会在屏幕上打印出测试的覆盖率,并同时生成文件“*cpp.gcov”,然后用vi打开就可以看见哪行被覆盖掉了。

 

使用gcov进行代码覆盖率测试  

场景:Support.cpp Main.cpp Support.h Main调用Support.cpp里的函数
step1: 编译,链接
           g++ -c Support.cpp -ftest-coverage -fprofile-arcs -o Support.o          --->> Support.gcno Support.o
           g++ -c Main.cpp -ftest-coverage -fprofile-arcs -o Main.o               --->> Main.gcno Main.o
           g++ -ftest-coverage -fprofile-arcs Main.o Support.o -lgcov -o Main.sh  --->> Main.sh
step2: 运行,生成gcda数据
           ./Main.sh         --->>Main.gcda  Support.gcda
step3:生成覆盖率数据
           gcov -b Main.cpp   --->> Main.cpp.gcov                                   【实际需要gcno,gcda文件】
           gcov -b Support.cpp  --->>Support.cpp.gcov
           【备注】实际上到这里就可以看到覆盖率信息了,并且在调用gcov的时候已经会有部分信息

 

本人�J�榫��g�r���a生�c.cpp文件���的.gcno文件。

��g�绦�gcov版后,�J��绦械降�.cpp文件��生成�c之���的.gcda文件。

.gcda文件少於.gcno文件的部份可能是未�绦械降�.cpp文件

 

你可能感兴趣的:(测试覆盖率,Gcov)