Невозможно создать файл * .c.gcov - PullRequest
2 голосов
/ 10 ноября 2011

У меня есть следующая структура:

Source_code/build/unix/Makefile
Source_code/code/Lib/src/lib1/a.c

Опции -fprofile-arcs и -ftest-coverage упоминаются в опции компиляции gcc. Он успешно генерирует файлы a.gcda и a.gcno. И когда задана следующая опция gcov a.c, она корректно выдает статистику по выполненным строкам.

Но он не может правильно сгенерировать файл a.c.gcov, он содержит только /* EOF */.

Выдает следующие сообщения:

../../code/lib/src/lib1/a.c:creating 'a.c.gcov'
../../code/lib/src/lib1/a.c:cannot open source file

Пожалуйста, дайте мне знать, чтобы сгенерировать файл a.c.gcov.

Ответы [ 2 ]

1 голос
/ 05 ноября 2014

Запуск gcov из папки, код которой был скомпилирован, работал для меня.

В верхней части файла .gcov указывается полный путь к файлу.Пример:

         -:    0:Source:tmp.c
         -:    0:Graph:tmp.gcno
         -:    0:Data:tmp.gcda
         -:    0:Runs:1
         -:    0:Programs:1
         -:    1:#include <stdio.h>
         -:    2:
         -:    3:int main (void)

Если он находится в другой папке, например, /path/tmp.c, выполните:

gcov ./path/tmp.c -o ./path/tmp

https://gcc.gnu.org/ml/gcc-help/2010-04/msg00080.html

0 голосов
/ 26 сентября 2014

В случае, когда исходный файл не может быть найден, предлагается использовать абсолютные пути при компиляции. Вместо использования "../".

Во-вторых, вы можете попробовать скопировать файлы gcno и gcda, чтобы они соответствовали "../../code/lib/src/lib1/a.c".

Или исправить правила сборки, чтобы удостовериться, что не применены нарушенные относительные пути (например, ../../)

...