1. gcov是什么?
- Gcov is GCC Coverage
- 是一个测试代码覆盖率的工具
- 是一个命令行方式的控制台程序
- 伴随GCC发布,配合GCC共同实现对C/C++文件的语句覆盖和分支覆盖测试;
- 与程序概要分析工具(profiling tool,例如gprof)一起工作,可以估计程序中哪一段代码最耗时;
注:程序概要分析工具是分析代码性能的工具。
2. gcov能做什么?
gcov可以统计
- 每一行代码的执行频率
- 实际上哪些代码确实被执行了
- 每一段代码(section code)的耗时(执行时间)
因此,gcov可以帮你优化代码,当然这个优化动作还是应该有开发者完成。
3. Gcov的实现原理简介
Gcc中指定-ftest-coverage 等覆盖率测试选项后,gcc会:在输出目标文件中留出一段存储区保存统计数据
在源代码中每行可执行语句生成的代码之后附加一段更新覆盖率统计结果的代码
在最终可执行文件中进入用户代码 main函数之前调用 gcov_init内部函数初始化统计数据区,并将gcov_exit内部函数注册为 exit handlers
用户代码调用exit
4. 如何使用gcov?
4.1 - 准备工作
==============
配置内核(Configure the kernel with):
CONFIG_DEBUG_FS=y
CONFIG_GCOV_KERNEL=y
选择gcov的格式(select the gcc's gcov format, default is autodetect based on gcc version):
CONF