gcov工具合并:“不是gcov数据文件”

时间:2018-06-19 13:29:49

标签: c++ c linux gcc gcov

我正在尝试使用gcov-tool合并几个源文件的一些现有coverage数据(我自己没有创建)。但是,当我调用gcov-tool merge dir1 dir2dir1是包含要合并的dir2文件的目录的.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=....|

以此类推。

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

1 个答案:

答案 0 :(得分:1)

我已经弄清楚了,这是一个字节序问题。我在gcc代码中查看了错误的检查,该代码实际上测试了大小端的.gcda文件。 gcov-tool不会执行此操作(我觉得很奇怪),因此看来您必须在具有与生成coverage数据的字节序相同的字节序的计算机上执行它。