前言
gcov是在代码运行时统计代码覆盖率的工具,随着gcc一起发布的。
它的使用很简单,需要在编译和链接时增加-fprofile-arcs -ftest-coverage生成二进制文件。
gcov主要使用.gcno和.gcda两个文件。
.gcno是由-ftest-coverage产生的,它包含了重建基本块图和相应的块的源码的行号的信息。
.gcda是由加了-fprofile-arcs编译参数的编译后的文件运行所产生的,它包含了弧跳变的次数和其他的概要信息。
参考:传送门
实际测试
上一个简单的测试代码vector.cpp:
#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;
double average(const vector<double> &array){
double sum = 0;
for(int i = 0;i<array.size();i++)
sum+=array[i];
return sum/array.size();
}
int main(){
vector<double> array = {2.234123412,143213.22342,3124132.41};
for(auto