gcov
简介
gcov 全称 GNU Coverage,由 GNU 出品的代码覆盖率检查工具。
使用
新创建源码文件 foo.c,如下:
#include <stdio.h>
void func(int flags)
{
if (flags)
printf("hello\n");
else
printf("no\n");
}
int main(int argc, char *argv[])
{
func(1);
func(1);
return 0;
}
编译源码文件,生成 gcov 标记文件 x.gcno、可执行文件 foo
$ gcc -coverage foo.c -o foo
跑可执行文件 foo,生成 gcov 数据文件 x.gcda
$ ./foo
通过 gcov
工具生成 x.c.gcov 文件
$ gcov foo.c
打开 foo.c.gcov,可以看到每一行的覆盖信息,如下:
其中 -
代表无效代码行,数字
代表此行执行次数,#####
代表此行没有执行过。
$ cat foo.c.gcov
-: 0:Source:foo.c
-: 0:Graph:foo.gcno
-: 0:Data:foo.gcda
-: 0:Runs:1
-: 1:#include <stdio.h>
-: 2:
2: 3:void func(int flags)
-: 4:{
2: 5: if (flags)
2: 6: printf("hello\n");
-: 7: else
#####: 8: printf("no\n");
2: 9:}
-: 10:
1: 11:int main(int argc, char *argv[])
-: 12:{
1: 13: func(1);
1: 14: func(1);
-: 15:
1: 16: return 0;
-: 17:}
也可以通过 lcov
工具进行可视化,转换成 index.html
在浏览器显示,如下:
$ lcov -c -d . -o foo.info
$ genhtml foo.info -o html
Last updated
Was this helpful?