покрытие кода — запустить инструмент gcov с помощью компилятора c ++

Я впервые работаю с инструментом покрытия gcov для анализа большого проекта.
У меня есть структура каталогов, как это:

    HW
-FooHW1.cpp
-FooHW1.h
-FooHW2.cpp
-FooHW2.h
-...
-Makefile.am
Lib1
-FooLib1.cpp
-FooLib1.h
-FooLib2.cpp
-FooLib2.h
-...
-Makefile.am

Lib2
...
-Makefile.am
Lib3
...
-Makefile.am
Main
-main.cpp
-main.h
-Makefile.am

Каждый каталог имеет свой собственный Makefile, сгенерированный с помощью automake для генерации зависимостей и того, где используется компилятор c ++.

Поскольку моей целью является анализ покрытия операторов, я попытался использовать gcov, добавив следующие строки в каждый файл Makefile.am, чтобы сгенерировать мои файлы .gcno и .gcda, чтобы использовать gcov:

    AM_CXXFLAGS = -fprofile-arcs -ftest-coverage
AM_LDFLAGS = -fprofile-arcs

К сожалению, даже если он компилируется, он не создает (или не связывает) несколько * .o, а при вызове gcov обычно выдает ошибку:

    undefined __gcov_init

Я также пытался расслабиться, согласно http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#index-coverage-536, верхние инструкции к:

    AM_CXXFLAGS = --coverage
AM_LDFLAGS = --coverage

но это не помогает мне.

Я хотел бы указать, что это первый опыт использования инструмента gcov и работы с большими проектами на c ++.
Спасибо за вашу помощь.

2

Решение

http://bobah.net/d4d/tools/code-coverage-with-gcov а также
http://www.slideshare.net/maguschen/using-gcov-and-lcov хорошие источники для использования gcov / lcov (с этой помощью мне удалось использовать lcov в действительно большом и сложном проекте)

lcov дает вам возможность показывать результаты покрытия в формате html (хороший процент для перечисленных файлов или даже для строк в исходных файлах).

О, и я надеюсь, что вы понимаете, что это динамическое покрытие, так что вам нужно запустить программу, чтобы получить любое освещение (здание должно только создавать .gcno файлы).

0

Другие решения

связать библиотеку gocv

-lgcov

это должно помочь

0

По вопросам рекламы [email protected]