Я использую 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 / to / obj * .c
а также
gcov -o каталог / to / obj * .gcda
а также
gcov -o каталог / to / obj * .gcno
но ни одно из этих решений не работает; я все еще получаю не могу открыть ошибку файла графа.
Любая помощь или совет будут оценены!
Вышеуказанная проблема связана с отсутствием .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, тогда, как вы заявили, проблема будет решена
Позвольте мне прояснить несколько вещей, которые вы делали неправильно.
Во-первых: вы всегда пытались указать * .gcda, * .gcno, * .c и т.д. после пути к каталогу obj, что совершенно неверно.
Что вам нужно сделать, это указать его как «-o путь / к / obj /» (путь к каталогу)
Вы даже можете указать путь к gcda-файлу этого конкретного исходного файла c / c ++ и указать путь к каталогу obj в флаге «-o», чтобы получить отчет для этого файла.
И если вы используете gcovr вместо gcov для своих отчетов, то вы можете получить все виды отчетов, указав только корневой каталог (каталог выше src & obj) с флагом «-r -root = ROOT».
Обратитесь к этому пользователю руководство для деталей на gcovr.