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

问题描述 投票:2回答:1

我正在尝试使用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=....|

等等。

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

c++ c linux gcc gcov
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.