使用gcov生成覆盖率时,提示version '402*', prefer '408*'

开发者福利!热门AI工具限免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

在使用gcov [srcfile]的命令生成.gcov文件的时候,提示如下错误, 无法生成gcov文件:

xxxxxxxxxxxx.gcno:version '402*', prefer '408*'
Segmentation fault


该问题是由于gcov在解析gcc编译器的时候出现不兼容的问题,gcc和clang编译器的演进是并行的,在gcc4.x版本时,出现了和clang编译不兼容得情况。

解决方法有两种:

1. 编译前解决

在编译前强行指定gcov版本,使编译后的gcno和gcda匹配当前gcov版本,方法如下:

LOCAL_CFLAGS += -Xclang -coverage-cfg-checksum -Xclang -coverage-no-function-names-in-data -Xclang -coverage-version='408*'


2.  编译后解决

在编译前解决该问题的方法是强行转换,该方法虽然能保证使用lcov统计覆盖率的时候不报错,但不兼容问题从本质上没有得到解决,仍可能因为不兼容导致覆盖率统计异常。

更为稳妥的办法是,在lcov工具中使用--gcov-tool选项选择需要的gcov版本,如下

lcov --gcov-tool /usr/bin/gcov-4.2

其中gcov-4.2是gcov的可执行bin,安装gcc后,在gcc的安装目录下可以找到

gcov+lcov分支覆盖率 关于怎么使用这两个工具见https://blog.csdn.net/weixin_42245449/article/details/115195734?spm=1001.2014.3001.5501 使用gcov+lcov测试程序,发现分支覆盖率数值很奇怪,比如printf计算有两条分支[+ -]这种,settext类似的也是。 查资料https://stackoverflow.com/questions/23219614/why-gcc-4-1-gcov-reports-100-branch-cover 阅读详情

相关推荐

代码覆盖工具gcov/lcov的使用

参考文献: gcov使用示例  http://blog.csdn.net/lishenglong666/article/details/8056777 lcov使用示例   http://www.linuxidc.com/Linux/2011-05/36544.htm gcov测试内核覆盖率 http://ltp.sourceforge.net/coverage/gcov.php 1.

ldhshao的专栏 1986

【Go语言】代码覆盖测试(gcov

【Go语言】代码覆盖测试(gcovGCOV示例工程simplemath/add.gosimplemath/sqrt.gocalc/main.go编译代码(生成gcno文件)Makefile使用"--coverage"编译参数运行程序(生成gcda文件)gcov生成gcov文件)lcov(生成info文件)genhtml(可视化成html)结果分析main.go.gcovadd.go.gcovsqrt.go.gcov GCOV gcov是gcc提供的代码覆盖测试工具,它的测试结果体现2个指标。 每行代码

tissar的博客 1728

从SolidWorks到URDF:插件使用、关节配置与PyBullet仿真避坑指南

本文提供了一份从SolidWorks导出URDF模型并导入PyBullet进行仿真的完整实战指南。详细讲解了SolidWorks插件的正确安装与配置、关节类型的选择与坐标系对齐的核心技巧,并针对PyBullet仿真中常见的模型散架、路径错误、物理属性异常等问题提供了深度避坑解决方案,帮助机器人开发者高效完成从设计到仿真的全流程。

weixin_29081101的博客 518

Prefer C++(三)

附注:1、 用C++编写驱动DLL的一些注意事项(.c和.cpp联编注意事项与此同)一般来讲首先要在声明导出函数的头文件中使用extern “C”{},以确保函数名称的匹配。对于驱动中的导出函数大多由操作系统定义,这一步由OS负责。以2000下打印处理器中的EnumPrintProcessorDatatypesW为例进行说明:该函数在winspool.h 中的声明为:BOOL

理想流 2438

C/C++统计内存泄漏问题和代码覆盖率的方法

1.C/C++统计内存泄漏问题 对于查找代码中存在的内存泄漏问题,我们可以使用valgrind工具来检查是否存在内存泄漏问题。比如下面的程序,在堆空间分配20个字节后,程序结束以前并没有释放掉这部分内存。 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int arg...

m0_37302832的博客 1129

gcov代码覆盖率使用gcov完成代码覆盖率的测试

Gcov作为gnu/gcc工作组件之一,是一款的免费的代码覆盖率测试工具,而且可以结合lcov生成美观的html的测试报表。本文介绍一些gcov使用方法,基本原理,一些实际中可能会遇到的问题以及解决思路。 Gcov的用法 1.1       编译 Gcov使用方法很简单,首先需要给gcc编译的候打开覆盖测试的开关 例如要对srcfile.c单个文件生成的程序进行代码覆盖测试,在

yuanxingyang的专栏 3044

Gcov/Lcov生成覆盖率遇到的一系列问题(ubuntu18.04)

Gcov/Lcov生成覆盖率遇到的一系列问题(ubuntu18.04)

qq_43685305的博客 2039

【转】gcov代码覆盖率使用gcov完成代码覆盖率的测试

转自: https://blog.csdn.net/yuanxingyang/article/details/6905506 Gcov作为gnu/gcc工作组件之一,是一款的免费的代码覆盖率测试工具,而且可以结合lcov生成美观的html的测试报表。本文介绍一些gcov使用方法,基本原理,一些实际中可能会遇到的问题以及解决思路。 Gcov的用法 1.1       编译 Gcov使用方...

msdnchina的专栏@JiNan,ShanDong 689

getpid.gcno:version402*‘, prefer ‘A94*

wk@ubuntu:~/workspace/newlib-install$ llvm-cov-10 gcov getpid.c File 'getpid.c' Lines executed:100.00% of 3 getpid.c:creating 'getpid.c.gcov'

qq_38963393的博客 2856

gcc交叉编译,gcov/gcovr生成html覆盖率报告

比如本例:example在编译的候,使用的路径是:E:\ddd_terry\coverage\arm>,可以看到是3级目录。1、如果安装了多个gcc版本(CodeSourcery/MinGW等),且在windows环境变量中可以找到多个gcov.exe,请清理环境,确认只有gcc4.3的版本。能否正常安装上,还是一个问题。主是因为windows交叉编译使用的是gcc是4.3的版本,wsl环境中的gcc安装的9.4的版本。从质量的角度考虑,需要评估代码的执行情况,现对linux平台的代码生成覆盖率报告。

littleline的专栏 2634

使用GCOV进行代码覆盖率统计注意问题

使用GCOV进行代码覆盖率统计的具体操作就不介绍了,网上有很多文章,如不明确可以参考如下文章。 https://blog.csdn.net/dengyou1937/article/details/101890305 网上给的代码都是执行完直接退出,即最后一个return语句结束。而我们实际应用中多进程程序是在死循环中执行的,为了测试覆盖率需要让程序运行一段间,可以通过自动化测试让程序多跑些流程,最后通过信号SIGINT来结束程序,然后查看代码覆盖率。针对上述流程需要注意,信号需要增加处理函数,否则程序

foolishlee的博客 2732

【转】 gcov代码覆盖率测试-原理和实践总结

转自:https://blog.csdn.net/yanxiangyfg/article/details/80989680   目录 一、gcov简介 二、gcov过程概况 三、使用gcov的3个阶段 四、gcov检测代码覆盖率的原理 五、服务程序覆盖率统计 六、内核和模块的gcov代码覆盖率测试 七、lcov工具使用 八、info文件格式信息 九、例子 FAQ 参考 感谢  一、gcov简介...

msdnchina的专栏@JiNan,ShanDong 2330

【嵌入式】gcov/lcov/gcovr代码覆盖率交叉编译使用解析

gcov是一个测试代码覆盖率的程序,正确地使用它搭配GCC可以分析、帮助你将代码写得更高效。帮助你优化程序。类似于一个profiling tool,使用gcov或者gprof,可以收集到一些基础的性能统计数据。每一行代码执行的频度每个代码文件中实际被执行到的行数每一个代码块执行使用gcov创建一个logfile叫做 源文件名称.gcxx (这里的源文件名称指的是.c或者.cc文件的文件名),表示的是这个 源文件.c 中每一行所被执行的次数。这些文件可以配合gprof使用

heroybc的博客 8820

gcc 编译的segmentation fault诡异问题

今天debug程序,在程序里加了一些新的变量,其他变量没有动过。 一跑程序,结果一个int*类型的叫Epoch的变量变成NULL了,以为是新加的变量的问题。检查了两个小,发现问题在于Epoch在初始化的候都不是NULL,但在运行中编程NULL了,非常不解,无论怎么调试都没有结果。 后来无意中make clean了一下,将所有的*.o都删了,从头编译,发现问题解决了。。。 可能是makef...

云计算? 561

361. Prefer loss to unjust gain. 宁可吃亏,不贪便宜

宁可吃亏,不贪便宜。

ylmmee的专栏 1114

执行gcov命令后,显示echo.gcno:version408*‘, prefer ‘B14*

我在运行特定的configure文件后,发现生成的.gcno文件没法用gcov跑。(大部分人可能都遇不到这种情况,但是我居然遇到了😂)发现~/.bashrc中居然设置了。能够生成正常的.gcno文件。排除了第一种原因后,

fflush_shuse的博客 857

CMake添加gcov代码覆盖测试支持

CMake添加gcov代码覆盖测试支持(金庆的专栏)在根CMakeList.txt中添加ENABLE_GCOV选项:OPTION(ENABLE_GCOV "Enable gcov (debug, Linux builds only)" OFF)IF (ENABLE_GCOV AND NOT WIN32 AND NOT APPLE)  SET(CMAKE_CXX_FLAGS_DEBUG "${CMA

金庆的专栏 5546
上一篇: 菜鸟学安卓1:环境搭建
下一篇: lcov生成覆盖率常用命令
ChaosV_Ls
博客等级 码龄18年 4粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值