gcov:无法打开图形文件

时间:2011-07-25 13:26:47

标签: c macos gcov

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

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下。

5 个答案:

答案 0 :(得分:12)

默认情况下,狮子会“gcc”不是gcc。这是LLVM。它不支持生成测试覆盖率数据。

如果您运行的是gcc-4.2 -fprofile-arcs -ftest-coverage a.c -o a,那将使用真正的gcc,它可能会有效。

答案 1 :(得分:2)

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

gcov -o a.c

答案 2 :(得分:2)

尝试使用clang代替gcc。我有the same problem,并使用clang为我修复了它。

答案 3 :(得分:1)

当您运行的gcov版本与用于编译应用程序的GCC版本不匹配时,通常会发生这种情况。在某些系统上,包管理器在如何链接GCC和gcov方面有奇怪的做法。例如,在许多系统上,gfortrangfortran-5相同,但gcov可能是旧的和有问题的。

答案 4 :(得分:0)

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

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

enter image description here

  • 从gcc网站写了this example代码:

    #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'