gcov не может найти файл. Mac OSX

#macos #gcov

#macos #gcov

Вопрос:

У меня проблема с вызовом gcov, он продолжает возвращаться — такого файла или каталога нет.

Когда я вызываю

 localhost:R-3.0.1 romantsegelskyi$ gcov src/main/eval.c  
eval.c: No such file or directory
  

Однако сам файл и информация, необходимая для gcov, существуют.

 localhost:R-3.0.1 romantsegelskyi$ ls src/main/eval*
src/main/eval.c       src/main/eval.d     src/main/eval.gcda  src/main/eval.gcno  src/main/eval.o
  

Я пытался указать —object-directory, но по-прежнему безуспешно

 localhost:R-3.0.1 romantsegelskyi$ gcov src/main/eval.c --object-directory=./src/main
eval.c: No such file or directory
  

Самое странное, что это имеет место только в OSX, в Linux все работает нормально, как и предполагалось. Есть идеи?

Комментарии:

1. Вы уверены, что имя файла (или команда) не содержит каких-либо странных / невидимых символов? Попробуйте ls src/main/eval.c (из того же контекста, что и gcov команда).

2. Кажется, работает нормально, localhost:R-3.0.1 романцегельский$ ls src/main/eval.c src/main/eval.c

Ответ №1:

  • То же поведение!! И что еще более странно: я получаю результат (файл .gcov), следуя этому сообщению !! Возможно, у вас тоже есть результат?
  • В проблеме есть два аспекта :
    • в руководстве gcov сказано, что gcov должен выполняться по умолчанию в каталоге, в котором находятся объектный файл и файлы данных gcov. Первое и самое простое рабочее решение: перейдите в соответствующий каталог и выполните gcov cd src/main; gcov eval.c
    • почему аргумент —object-directory = … кажется, не работает? Поскольку ожидаемым значением является имя каталога, а в приведенном примере это имя файла. Поэтому вам следует написать —object-directory=src/ main (это тоже работает) или —object-file=src/main/eval.c (согласно документу. Я такого не пробовал !)