首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GCOV版本错配-预期700 e得到408 r

GCOV版本错配-预期700 e得到408 r
EN

Stack Overflow用户
提问于 2020-02-21 17:33:36
回答 1查看 3.7K关注 0票数 5

在一个使用GCC 4.4.7 /GCOV4.4.7的服务器上,我能够成功地运行测试。但是,在使用GCC 4.8.5/GCOV 4.8.5的不同服务器上,运行测试结果会导致以下错误:

代码语言:javascript
运行
复制
profiling:/path/to/foo.gcda:Version mismatch - expected 700e got 408R

以下是这些版本的输出:

代码语言:javascript
运行
复制
$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)

$ gcov --version
gcov (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)

在寻找这一错误后,似乎经常是gcc和gcov之间的版本不匹配造成的,而我的版本却是相同的。

我们最近把这台服务器上的gcc从4.4.7升级到4.8.5。这个问题似乎是由升级引起的。

我应该提到,我正在测试Python扩展,我认为这与测试普通的C应用程序有点不同。

我所做的工作如下:

代码语言:javascript
运行
复制
export CFLAGS="--coverage"
python setup.py build_ext --inplace
python tests.py

在这两个服务器上,第二个命令适当地创建.gcno文件。

在4.4.7的服务器上,第三个命令将成功地创建.gcda文件。但是4.8.5的服务器打印错误消息

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-22 00:23:00

GCC的一个版本制作的覆盖仪器与其他版本的不完全兼容,GCC版也是如此。报告的错误消息似乎表明,您正在使用工具链的一个版本对至少部分使用不同版本构建的工件和工具执行覆盖率分析。

为了解决这个问题,您应该确保所有的工具化二进制文件,包括任何库,以及任何其他与覆盖相关的构建工件,都是通过相同版本的工具链生成的。从测试中的组件的源--包括任何仪器化库,不管是否属于同一个构建--进行完全干净的重构,应该可以做到这一点。但是,可能没有必要重新构建尚未用于覆盖测试的二进制文件。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60343696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档