не удается открыть файл графика gcov с помощью gcc

Я использую gcov в качестве инструмента покрытия кода для моего проекта c ++ с gcc (в настоящее время 4.6.3, но скоро будет 4.8) в Ubuntu 12.04, и я получаю сообщение об ошибке, не могу открыть файл графика. Что означает эта ошибка? И как мне от него избавиться, чтобы увидеть покрытие кода?

Я видел другие решения этой проблемы, наиболее популярным из которых является использование clang (gcov : не удается открыть файл графика) вместо gcc, но я не могу переключать компиляторы, мне нужно использовать gcc, так что это не подходящее решение для меня. Кроме того, в документации по gcov сказано, что он должен работать с gcc.

Другое решение - исправить файл конфигурации (http://ubuntuforums.org/showthread.php?t=1547252), но я не уверен, о каком файле конфигурации говорит этот пользователь, поэтому, если это моя проблема, я не знаю, как ее исправить.

мои файлы .gcda и .gcno правильно генерируются в моем каталоге obj

помимо того, что я перехожу в свой верхний каталог, где я компилирую свой код и выполняю gcov * .c, я также пробовал gcov -o directory / to / obj * .c и gcov -o directory / to / obj * .gcda и gcov -o directory / к / obj * .gcno

но ни одно из этих решений не работает; Я все еще получаю сообщение об ошибке "Невозможно открыть файл графика".

Любая помощь или совет будут оценены!


person mna    schedule 16.10.2013    source источник


Ответы (2)


Вышеупомянутая проблема связана с отсутствием .gcda and .gcno file in the directory where your source code present.

Итак, я предлагаю 1-ю копию one .gcda and .gcno file of particular .c file in your source code where your .c resides then execute gcov filename.c.

Если вы получили покрытие, попробуйте софт связать все ваши .gcda и .gcno с исходным кодом, если не хотите копировать из каталога obj, тогда, как вы заявили, проблема будет решена.

person vinay hunachyal    schedule 24.10.2013

Позвольте мне прояснить несколько вещей, которые вы делали неправильно.

Во-первых: вы всегда пытались указать * .gcda, * .gcno, * .c и т. Д. После пути к каталогу obj, что совершенно неверно. Что вам нужно сделать, так это указать его как "-o path / to / obj /" (путь к каталогу)

Вы даже можете указать путь к файлу gcda этого конкретного исходного файла c / c ++ и указать путь к каталогу obj в флаге «-o», чтобы получить отчет для этого файла.

И если вы используете gcovr вместо gcov для своих отчетов, вы можете получить все виды отчетов, указав только корневой каталог (каталог выше src и obj) с флагом «-r -root = ROOT». Подробную информацию о gcovr см. В этом руководстве пользователя.

person Vikas Tawniya    schedule 24.02.2017