gcov-tool merge:“不是gcov数据文件”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gcov-tool merge:“不是gcov数据文件”相关的知识,希望对你有一定的参考价值。

我正在尝试使用gcov-tool来合并一些现有的覆盖数据(我没有自己创建)用于多个源文件。但是,当我调用gcov-tool merge dir1 dir2,其中dir1dir2是包含我打算组合的.gcda文件的目录时,我反而面对./SOME_FILE.gcda: not a gcov data file中每个文件的dir1错误。

起初我假设覆盖文件必须被破坏,但后来我看了gcc-6.3.0(它与我安装的gcov-tool版本相匹配)源代码(libgcc/libgcov-util.c),其中错误消息似乎只在前几个时打印出来某些.gcda文件的字节与魔术ASCII字符串'gcda'不匹配。然而hd dir1/SOME_FILE.gcda产量:

00000000 67 63 64 61 36 30 33 2a 17 68 64 3d 01 00 00 00 |gcda603*.hd=....|

等等。

以前有没有人处理类似的事情?

答案

我已经弄明白了,这是一个字节序问题。我正在查看gcc代码中的错误检查,它实际上测试了小端和大端.gcda文件。 gcov-tool不会这样做(我觉得很奇怪)所以看起来你必须在一台机器上执行它,它具有与生成覆盖数据相同的字节序。

以上是关于gcov-tool merge:“不是gcov数据文件”的主要内容,如果未能解决你的问题,请参考以下文章

merge是啥意思

merge是啥意思用法都有哪些

git merge的三种操作merge, squash merge, 和rebase merge

git merge为啥会覆盖

java merge

如何解决gerrit merge冲突问题