2015-12-22 62 views
1

试图运行gcov我的特拉维斯CI构建的一部分的时候,我发现了以下错误:的gcov无法打开图形文件

$ gcov src/bgrep.c 
bgrep.gcno:cannot open graph file 

.travis.yml

language: c 
compiler: gcc 
sudo: false 

before_script: 
    - uname -a 
    - printenv 
    - gcov --version 

script: 
    - scons coverage=1 
    - ls -l src/ 
    - test/run_test.py 
    - ls -l src/ 
    - gcov src/bgrep.c 
    - ls -l src/ 
    - ls -l 

after_success: 
    - bash <(curl -s https://codecov.io/bash) 

我可以运行的确切命令序列(scons,test/run_test.py,gcov src/bgrep.c)在我的Fedora机器上,gcov产生grep.gcov如预期的那样。

Travis正在使用gcov (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3。你可以看到一个example build log here

我(或特拉维斯)做错了什么?

+0

你可以运行'find'吗? –

+0

这似乎是不同版本的'gcov'之间的行为差​​异。很显然,当我给gcov一个像src/bgrep.c这样的路径时,我的新版Fedora很聪明,能够找到数据文件。较老的gcov需要一个'-o'选项。 –

+0

有趣。这是否意味着它已经解决了? –

回答

1

我对gcov和travis有同样的问题。看起来gcov确实需要* .gcda和* .gcno文件必须与* .c文件位于同一目录中。另外,必须给出-o选项,然后指向相同的目录...

所以,我有源文件在文件夹src /和build/coverage /中的二进制文件。首先,我尝试使用'gcov -o build/coverage/src/*。c',这种方法无效。第二次尝试是将* .gc *文件复制到src /并执行也不起作用的'gcov src/*。c'。它终于与'gcov -o src/src/*。c'一起工作。