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
这样应该是标准的调用方式。
gcov 统计 inline 函数的更多相关文章
- 理解C++的inline函数
C++的inline函数就是编译器在编译代码时,将"对此函数的每一个调用"都以函数本体替换之,该过程发生在编译期间. inline函数的优点是,它可以省去函数调用所带来的额外开销, ...
- C++ inline函数
本文主要记录了C++中的inline函数,也就是内联函数,主要记录了以下几个问题: C++为什么引入inline函数? 为什么inline能很好的取代表达式形式的预定义? inline函数的使用场合 ...
- inline函数的用法
在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间或是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数.栈空间就是指放置程式的局部数据也就是函数内数据的内存空间,在系统下,栈空间 ...
- effective c++:inline函数,文件间编译依存关系
inline函数 inline函数可以不受函数调用所带来的额外开销,编译器也会优化这些不含函数调用的代码,但是我们不能滥用Inline函数,如果程序中的每个函数都替换为inline函数那么生成的目标文 ...
- C++的优秀特性2:inline 函数
(转载请注明原创于潘多拉盒子) Inline函数是C++的一个很小的特性,在不计较效率的情况下,这个特性似乎可有可无.然而,C++天生是为最为广泛的应用场景设计的,因此,总会有关于效率的问题.其实,除 ...
- 【转载】C++ inline 函数
(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. inline int min(int first, int ...
- C++中的inline函数
内联函数: () 内联函数定义和作用: 将一个函数声明为inline,那么函数就成为内联函数.内联函数通常就是它在程序中每个调用点上“内联地”展开.从定义上看,内联函数跟一般函数不一样,一般函数调用的 ...
- 【转载】 c语言inline函数的使用
c语言inline函数的使用 转载自:http://blog.chinaunix.net/uid-21843265-id-3056446.html 大学在教科书上学习过inline函数,定义为inli ...
- C Static Inline函数
Inline函数 程序执行时,处理器从Memory中读取代码执行.当程序中调用一个函数时,程序跳到存储器中保存函数的位置开始读取代码执行,执行完后再返回. 为了提高速度,C定义了inline函数,告诉 ...
随机推荐
- 一口一口吃掉Hibernate(六)——多对多关联映射
今天来说说hibernate中的多对多关联映射,多对多关联映射涉及到单向映射和双向映射2种. 首先举个多对多关联例子:用户User和角色Role,一个用户可以属于多个角色,一个角色可以有多个用户.这就 ...
- 动态SQL中不同变量的写法总结
.一般变量的写法: if (str_kind is not null) then l_str_kind := str_kind; v_wheresql := v_wheresql || ' and k ...
- 从输入url到页面返回到底发生了什么
1. 前言 Google应该是开发者平日里用得最多的网站之一,今早笔者在浏览器地址栏里键入www.google.com的时候,突然想了解下这背后的网络通信过程究竟是怎么样的.毕竟自己也算是一名Web开 ...
- Matlab中数据的存储方式
简介 MATLAB提供了丰富的算法以及一个易于操作的语言,给算法研发工作者提供了很多便利.然而MATLAB在执行某些任务的时候,执行效率偏低,测试较大任务量时可能会引起较长时间的等待.未解决这个问题, ...
- Android-Chart
MPAndroidChart 包括折线图.曲线图.柱形图.饼图.K线图等等 我的地址:https://github.com/kongqw/MPAndroidChart 开源地址:https://git ...
- Android 实现串口的移植
安卓串口的实现,需要底层C++配合,不过这次我们根据framework中的思想,直接用API修改提供给JAVA层调用,这个就比较简单了. DEV项目需要,要实现在Android中实现串口的收发功能,有 ...
- 2014 BDTC 参会有感
中国大数据技术大会(Big Data Technology Conference,BDTC)是目前国内最具影响.规模最大的大数据领域的技术盛会.大会的前身是Hadoop中国云计算大会(Hadoop i ...
- 全文检索Lucene (1)
Lucene是apache开源的一个全文检索框架,很是出名.今天先来分享一个类似于HelloWorld级别的使用. 工作流程 依赖 我们要想使用Lucene,那就得先引用人家的jar包了.下面列举一下 ...
- ROS探索总结(十六)——HRMRP机器人的设计
1. HRMRP简介 HRMRP(Hybrid Real-time Mobile Robot Platform,混合实时移动机器人平台)机器人是我在校期间和实验室的其他小伙伴一起从零开 ...
- Java: How to resolve Access Restriction error
Issue: Access restriction: The constructor 'BASE64Decoder()' is not API (restriction on required lib ...