Я впервые работаю с инструментом покрытия 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 ++. Спасибо за вашу помощь.
AM_LDFLAGS = --coverage
должен делать то, что я имел в виду. - person πάντα ῥεῖ   schedule 05.08.2013AM_CXXFLAGS = --coverage
AM_LDFLAGS = --coverage
AM_CFLAGS = -shared
, и он, наконец, создает файлы * gcno, я не мог проверить общую причину, у меня были другие проблемы, надеюсь, это сработает. Спасибо! - person gRomano   schedule 05.08.2013make VERBOSE=1
и просмотреть флаги связи - person prehistoricpenguin   schedule 15.04.2021