我正在尝试使用gcov-tool合并几个源文件的一些现有coverage数据(我自己没有创建)。但是,当我调用gcov-tool merge dir1 dir2
和dir1
是包含要合并的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=....|
以此类推。
以前有没有人处理过类似的事情?
答案 0 :(得分:1)
我已经弄清楚了,这是一个字节序问题。我在gcc代码中查看了错误的检查,该代码实际上测试了大小端的.gcda文件。 gcov-tool不会执行此操作(我觉得很奇怪),因此看来您必须在具有与生成coverage数据的字节序相同的字节序的计算机上执行它。