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'