Gcov 详解 + 内核函数覆盖率测试方法详述及产生错误解决办法

本文详细介绍了Gcov,一个GCC提供的代码覆盖率测试工具。Gcov可以统计每行代码的执行频率和哪些代码真正被执行,帮助优化代码。文章讲解了Gcov的实现原理,包括在内核中配置和使用Gcov进行函数覆盖率测试的方法,以及如何解决在使用过程中遇到的错误。同时,还提到了内核编译时的相关配置和gcov数据文件的生成与解读。
摘要由CSDN通过智能技术生成

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 正常结束时,gcov_exit函数得到调用,其继续调用 __gcov_flush函数输出统计数据到 *.gcda 文件中


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值