C ++ Использование проблем gcov и lcov? - PullRequest
8 голосов
/ 30 января 2011

Я использую компилятор Ubuntu 10.1, g ++.

Я пытаюсь использовать gcov и lcov для моего проекта C ++. Мне удается скомпилировать gcov:

g++ -fprofile-arcs -ftest-coverage main.cpp user.cpp game.cpp

Нет сообщения об ошибке или предупреждения. Далее я пытаюсь запустить gcov:

gcov main.cpp user.cpp game.cpp

Также хорошо. Я также пытаюсь запустить мою программу:

./a.out

и снова запустите gcov, мой main, user и game.cpp теперь показывают некоторый процент. Я хочу захватить данные, я набираю это в терминале:

lcov --directory /home/projects/Game1/ -c -o application.info

Но это дает мне это:

Capturing coverage data from /home/projects/Game1/
geninfo: ERROR: cannot read /home/projects/Game1/!

Я ищу в интернете, читаю документацию lcov, не могу найти ответы. Кто-нибудь может мне помочь?

Кроме того, я также не смог открыть файл main.gcda. (Я пытался открыть с помощью текстового редактора, он говорит о некоторой проблеме кодировки символов, довольно много: UTF-8, Western (ISO-8859-1), Western ( ISO-8859-11) и т. Д., Но все еще не могу открыть и прочитать файл.

Пожалуйста, помогите мне .. кто-нибудь ??

EDIT:

Признаю, это моя ошибка (мне очень жаль, "home / Projects / Game1" с большой буквы "P".) После проверки пути я получил эту новую ошибку:

geninfo: ERROR: /home/Projects/Game1/main.gcno: reached unexpected end of file

Ответы [ 3 ]

14 голосов
/ 01 февраля 2011

Не забудьте включить флаг -g (отладочная информация): -g -fprofile-arcs -ftest-coverage

При работе с lcov я обнаружил, что лучше использовать абсолютные путивместо относительных путей.Вы можете попробовать использовать lcov для записи начальной нулевой даты покрытия с ключом -i, --initial.

Вот пример моего способа достижения нулевых счетчиков

$ lcov --zerocounters --directory myFullPath
$ lcov --capture --initial --directory myFullPath --output-file myOutputFile

Затем запустите вашу программуи затем захватите данные покрытия:

$ lcov --no-checksum --directory myFullPath --capture --output-file myOutputFile

Наконец, lcov позволяет вам генерировать HTML-отчет:

$ lcov/genhtml --highlight --legend --output-directory myOutPutHTMLdirectory myOutputFile

Надеюсь, это поможет вам.

2 голосов
/ 15 ноября 2013

У меня была точно такая же проблема. И оказалось, что если код библиотеки меняется, когда вы уже выполняли тесты покрытия, иногда это сбивает с толку. Единственный способ выйти из него - удалить файл (ы), вызвавший ошибку, и перекомпилировать.

0 голосов
/ 29 июня 2012

Скомпилируйте код, используя:

lcov --directory . --output-file app.info

Затем используйте следующее для создания HTML-страниц.

genhtml app.info
...