Подтвердить что ты не робот

Gcov: вывод .gcda из общей библиотеки?

Можно ли создавать файлы данных gcov (.gcda файлы), запустив исполняемый файл, связанный с общей библиотекой, созданной с опцией -coverage?

В принципе, у меня есть основная библиотека, состоящая из нескольких файлов С++, скомпилированных в одну общую библиотеку, а затем подкаталог под названием "test", содержащий тестовую программу, которая связывает и тестирует основную библиотеку. Все компилируется отлично, и файлы .gcno создаются как для исходных файлов библиотеки, так и для исходных файлов теста. Файлы .gcda создаются только для тестовых исходных файлов, но мне действительно нужны они для фактических исходных файлов, которые скомпилированы в общую библиотеку.

Любые идеи?

Дополнительная информация:
- Все это код на С++
- Все создается с помощью скриптов make, созданных automake
- Параметр -coverage указан для lib_la_CPPFLAGS и lib_la_LDFLAGS в общей библиотеке Makefile.am
- Параметр -coverage указан для AM_CPPFLAGS и AM_LDFLAGS в тестовом исполняемом файле Makefile.am
- Исходные файлы теста используют Google Test (С++ Unit Testing Framework)

Изменить: проблема с фиксированным расстоянием

4b9b3361

Ответ 1

Я, наконец, решил эту проблему, получив некоторую помощь от gcc-парней. См. Раздел здесь: http://gcc.gnu.org/ml/gcc-help/2010-09/msg00130.html.

Оказывается, что файлы .gcda помещаются в каталог .libs, так как файлы разделяемой библиотеки (.so) были. Чтобы получить gcov для создания вывода, мне пришлось переместить файлы .gcda на один уровень туда, где были исходные файлы.

Кроме того, здесь аналогичный поток, когда кто-то другой сталкивался с некоторыми из тех же проблем: может gcov иметь дело с общим объектом?.