gcov是什么?
- 测试代码覆盖率的工具
- 命令行方式控制台程序
- GCC自带,伴随GCC一起发布
- 可以和gprof一起工作估算代码执行时间
gcov能做什么?
- 每一行代码的执行效率
- 哪些代码确实被执行了
- 每一段代码的耗时
如何使用?
1.编译生成.gcno与.gcda
大部分博客和老的官方manual会告诉你在编译的时候加两个参数 (包括man)-ftest-coverage -fprofile-arcs
但是在g++中会出现(gcc也会出现这种问题)
```
undefined reference to `__gcov_init'
```
因为作者在新版本中更改了编译选项,只需要从
```
gcc xxx.o -o xxx --coverage
gcc xxx.o -o xxx -lgcov
gcc xxx.o -o xxx -fprofile-arcs
```
选一个就行,我选择的是–coverage, 记得要在编译以及链接的时候加,仅在链接的时候加不会生成相关的文件。编译后会生成.gcno文件,运行后会生成.gcda文件,这些是生成分析文件的源文件
.gcno包含了重建基本块图和相应的块的源码的行号的信息。
.gcda由编译后的文件运行所产生的,它包含了弧跳变的次数和其他的概要信息。
2. 生成报告
基本命令
gcov xxx.cc
生成 .cov文件,使用vim打开即可查看
选项
-b 分支覆盖
-a 所有block覆盖
-f 函数覆盖
-: 0:Source:test.c
-: 0:Graph:test.gcno
-: 0:Data:test.gcda
-