【问题标题】:gcov cannot open graph filegcov 无法打开图形文件
【发布时间】:2015-12-22 02:26:51
【问题描述】:

在我的 Travis 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)

我可以在我的 Fedora 机器上运行确切的命令序列(sconstest/run_test.pygcov src/bgrep.c),并且gcov 按预期生成grep.gcov

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

我(或 Travis)做错了什么?

【问题讨论】:

  • 你也可以运行find 吗?
  • 这似乎是gcov 不同版本之间的行为差​​异。显然,当我给gcov 提供类似src/bgrep.c 的路径时,我的新Fedora 足够聪明,可以找到数据文件。较旧的 gcov 需要 -o 选项。
  • 有趣。这是否意味着它已经解决了?
  • 是的。我最终会添加一个答案。

标签: gcc travis-ci gcov


【解决方案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' 一起工作了。

【讨论】:

    猜你喜欢
    • 2011-10-12
    • 2013-10-25
    • 2013-06-21
    • 2018-04-22
    • 2019-01-06
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多