我正在尝试使用gcov工具对几个源文件合并一些现有的覆盖数据(这些数据不是我自己创建的)。但是,当我调用gcov-tool merge dir1 dir2时,dir1和dir2是包含.gcda文件的目录,我打算将它们组合在一起,相反,我会遇到dir1中每个文件的./SOME_FILE.gcda: not a gcov data file错误。
起初,我假设覆盖率文件必须损坏,但随后我查看了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=....|
诸若此类。
以前有人处理过类似的事情吗?
发布于 2018-06-19 14:27:39
我想出来了,这是个令人着迷的问题。我看错了gcc代码中的检查,它实际上测试了小的和大的endian .gcda文件。gcov-tool没有这样做(我觉得这很奇怪),所以您似乎必须在一台机器上执行它,其功能与生成覆盖数据的机器相同。
https://stackoverflow.com/questions/50929733
复制相似问题