2012-09-17 143 views
14

只是试图让gcov一个启动和运行,得到以下错误: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 

我使用铛/ profile_rt产生的gcov需要的文件,我猜想可能有一些用它做。不过,它在我的另一台电脑上工作,所以我认为它可以以某种方式修复。

回答

16

我刚在我的机器上遇到同样的问题。

确保您使用的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来解决问题。如果我有动力,我想一个更优雅的方法将涉及使用更新替代方案。 –

+0

谢谢安东尼! 'ln -sf'可以自动为你删除旧的gcov。 –

+0

谢谢@EricZ。更新:D –

5

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

7

我的问题是,我更新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