17

我正在尝试使用 gcov。我有这个简单的文件 ac:

int main() {
   return 0;
}

所以我愿意

gcc -fprofile-arcs -ftest-coverage a.c -o a
./a
gcov a.c

我得到

a.gcno:cannot open graph file

难道我做错了什么?我在 Mac OS X Lion 下。

4

5 回答 5

12

默认情况下,在 Lion 上,“gcc”不是 gcc。这是LLVM。而且它不支持生成测试覆盖率数据。

如果你gcc-4.2 -fprofile-arcs -ftest-coverage a.c -o a改为运行,它将使用真正的 gcc,它可能会工作。

于 2011-09-13T17:17:08.643 回答
2

尝试使用clang而不是gcc. 我有同样的问题,并使用clang为我修复它。

于 2011-12-25T15:13:06.760 回答
2

您确定从与源文件相同的目录运行命令吗?您必须在同一目录中,除非您指定 -o 标志。尝试:

gcov -o a.c
于 2011-07-26T01:34:56.050 回答
1

gcov当您运行的版本与用于编译应用程序的 GCC 版本不匹配时,通常会发生这种情况。在某些系统上,包管理器在链接 GCC 和gcov. 例如,在许多系统gfortran上是相同的,gfortran-5gcov可能是旧的和硬壳的。

于 2015-12-16T00:03:20.877 回答
0

我在上使用了以下内容Mac 10.8.4

  • 通过 xcode 安装命令行工具:

在此处输入图像描述

  • 从 gcc 网站编写了这个示例代码:

    #include <stdio.h>  
    main() 
    {  
       int i, total; total = 0; 
       for (i = 0; i < 10; i++) 
          total += i; 
       if (total != 45) 
          printf ("Failure\n"); 
       else 
          printf ("Success\n"); 
    }
    
  • 使用真正的 GCC 编译gcc-mp-4.7 -fprofile-arcs -ftest-coverage tmp.c

  • 使用 GCC 的 gcov:gcov-mp-4.7 -b tmp.c会给你这个输出:

    File 'tmp.c'
    Lines executed:87.50% of 8
    Branches executed:100.00% of 4
    Taken at least once:75.00% of 4
    Calls executed:50.00% of 2
    Creating 'tmp.c.gcov'
    
于 2013-06-21T14:28:56.423 回答