在一个安装有GCC 4.4.7/GCOV 4.4.7的服务器上,我成功地运行了测试。然而,在另一台安装有GCC 4.8.5/GCOV 4.8.5的服务器上,运行测试会导致以下错误:
profiling:/path/to/foo.gcda:Version mismatch - expected 700e got 408R
以下是版本输出:
$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
$ gcov --version
gcov (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
在寻找此错误时,似乎经常是由于gcc和gcov之间版本不匹配引起的,但我的版本是相同的。
我们最近将该服务器上的gcc从4.4.7升级到4.8.5,这个问题似乎是由升级引起的。
我应该提到我正在测试Python C扩展,我认为这与测试普通的C应用程序有点不同。
我执行以下操作:
export CFLAGS="--coverage"
python setup.py build_ext --inplace
python tests.py
在两台服务器上,第二个命令会适当地创建
.gcno
文件。在版本为 4.4.7 的服务器上,第三个命令将成功创建 .gcda 文件。但是版本为 4.8.5 的服务器会打印出错误信息。