gcov-工具合并:"not a gcov data file"

gcov-tool merge: "not a gcov data file"

我正在尝试使用 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 不会执行此操作(我觉得这很奇怪),因此您似乎必须在与生成覆盖数据的机器具有相同字节顺序的机器上执行它。