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.

Ответы

Ответ 1

По умолчанию на Lion "gcc" не является gcc. Это LLVM. И он не поддерживает генерирование данных тестового покрытия.

Если вы запустите gcc-4.2 -fprofile-arcs -ftest-coverage a.c -o a вместо этого, то будете использовать реальный gcc, и он, вероятно, сработает.

Ответ 2

Вы уверены, что используете команду из того же каталога, что и исходный файл? Вы должны находиться в том же каталоге, если не укажете флаг -o. Попробуйте:

gcov -o a.c

Ответ 3

Попробуйте использовать clang вместо gcc. У меня была та же проблема, и с помощью clang исправил это для меня.

Ответ 4

Часто это происходит, когда версия gcov, которую вы запускаете, не соответствует версии GCC, используемой для компиляции приложения. В некоторых системах менеджеры пакетов имеют странную практику в том, как они связывают GCC и gcov. Например, во многих системах gfortran совпадает с gfortran-5, но gcov может быть чем-то старым и жестким.

Ответ 5

В Mac 10.8.4 я использовал следующее:

  • Установлен через xcode инструменты командной строки:

enter image description here

  • написал этот пример с веб-сайта 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'