Gcov内存不足/版本不匹配?

24

我正在尝试启动gcov,但遇到以下错误:

$ gcov src/main.c -o build
build/main.gcno:version '404*', prefer '407*'

gcov: out of memory allocating 14819216480 bytes after a total of 135168 bytes

我正在使用clang/profile_rt生成gcov所需的文件,我猜这可能与此有关。虽然在我的另一台计算机上可以工作,但我认为它可以通过某种方式进行修复。

4个回答

25

我在我的电脑上遇到了同样的问题。

请确保你使用的gcov版本和编译器版本匹配。

当我使用g++-4.7编译且使用gcov 4.6时,我也遇到了这个问题。

在我的机器上,sudo apt-get install ggcov 帮我安装了最新版本。然后,我需要运行命令 sudo ln -sf /usr/bin/gcov-4.7 /usr/bin/gcov 将gcov指向正确的位置。


1
感谢您的帮助!我通过执行gcov-4.7而不是gcov来解决了这个问题。如果我有动力,我想一个更优雅的方法可能涉及使用update-alternatives。 - arr_sea
谢谢Anthony!而ln -sf可以自动为你删除旧的gcov。 - Eric Z
谢谢@EricZ。已更新:D - anthony sottile

12

我的问题在于我更新了gccg++,以便使用更新的编译器,但是忘记更新gcov版本,这意味着运行"gcov"或"lcov"会选择gcov的上一个编译器版本。

基本上,运行g++ --versiongcov --version应该产生相同的版本号,否则事情就会出错。

以下是我如何更新编译器版本的步骤,最后一行是我遗漏的内容,使得一切正常运转。

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 90
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 90
sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-4.9 90

10

我刚遇到了同样的问题,而且我已经正确安装了版本。在我的情况下,解决方法是从您编译的任何子目录中删除所有 *.gcda 文件。 我的 make clean 没有覆盖它们。


谢谢。让我挠了好一阵头! - Ashley Duncan

0
运行带有-v标志的gcov命令,您可以获得确切的执行gcov命令。这可能有助于理解发生了什么。
在我的情况下,指定gcov版本有助于解决问题: gcovr --gcov-executable gcov-7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接