gcov 统计 inline 函数

gcov 统计 inline 函数

(金庆的专栏)


gcov可以统计 inline  函数,可是实际使用中碰到统计次数总是为0的现象。


假设类A的头文件为 A.h, 实现文件为 A.cpp.

A 有几个 inline  成员函数定义在 A.h 中。

使用 gcov  统计 A 的代码覆盖率时,可能会发现 A.h 中的 inline 成员调用次数为空或0。

除了确实未调用的原因,可能是 gcov 统计的对象错了。

"gcov A.cpp" 统计的是 A.cpp 中实现的函数代码,如果 A.cpp  中未调用自身的 inline  函数,统计结果确实为0。

只有到这些 inline 的调用方 cpp 文件中去统计,才会有想要的结果。

例如,B.cpp 中调用了 A 的 inline  函数,"gcov B.cpp" 才会统计出这些 inline 代码.

参考:

Why the inline function can not be covered?


另外,CMake  构建的.o文件命名不是 A.o,  而是 A.cpp.o,  所以

gcov A.cpp

会报 A.gcno 不存在。

实际文件应该是 A.cpp.gcno.

 把它复制为 A.gcno 就行了。

或者用

gcov A.cpp.gcda

不知为什么,可以直接用 gcda 文件作为输入。

或者

gcov -o A.cpp.o A.cpp

这样应该是标准的调用方式。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值