gcov-tool合并: "不是gcov数据文件"

4
我正在尝试使用 gcov-tool 合并一些现有的覆盖率数据(这些数据不是我自己创建的)来处理几个源文件。但当我调用 gcov-tool merge dir1 dir2,其中 dir1dir2 是包含我想要合并的 .gcda 文件的目录时,我却遇到了 ./SOME_FILE.gcda: not a gcov data file 的错误,对于 dir1 中的每个文件都会出现此类错误。

起初我认为覆盖文件可能已损坏,但后来我查看了与我安装的 gcov-tool 版本匹配的 gcc-6.3.0 源代码 (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=....|

等等。

有人之前处理过类似的问题吗?

1个回答

2
我已经找到了答案,这是一个字节序问题。我观察的是gcc代码中错误的检查,它实际上同时测试小端和大端.gcda文件。但是gcov-tool没有这样做(我觉得很奇怪),所以你需要在与生成覆盖率数据的机器具有相同字节序的机器上执行它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接