gcov сообщает о неверном результате для класса только заголовка

Ранее уже задавалось много похожих вопросов:

чтобы назвать только несколько. Однако ни один из них не помог мне решить мою собственную проблему.

Я компилирую свой исходный код с gcc версия 4.8.4 (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.3)

g++ -c -pipe -Wno-psabi -std=gnu++11 -Wextra -pedantic -fprofile-arcs -ftest-coverage --coverage -fno-inline -fno-inline-small-functions -fno-default-inline -O0 -fno-elide-constructors -g -Wall -W -o .obj/myclass.o unittest_myclass.cpp

Тогда я бегу gcov (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.3) 4.8.4 на одном из моих исходных файлов с

gcov unittest_myclass.cpp -o .obj/

Этот файл содержит модульные тесты для класса только заголовка. gcov успешно генерирует информацию о покрытии для этого заголовочного файла:

File '../include/myclass.h'
Lines executed:11.05% of 173
Creating 'myclass.h.gcov'

Тем не менее, результаты в myclass.h.gcov не правы. Для большинства строк gcov сообщает, что они не содержат исполняемый код. Для тех, кого он определяет как исполняемый файл, он в основном сообщает, что они не были выполнены. Но я уверен, что они выполняются (я проверял это во время отладки, некоторые модульные тесты не выполнялись из-за ошибок и т. Д.). Шаблоны не участвуют.
Поэтому я предполагаю, что по какой-то причине gcov не может определить правильное выполнение. Как видно из приведенных выше аргументов командной строки: оптимизация отключена, встраивание отключено …

Есть идеи, что еще может вызвать эти проблемы?

2

Решение

Кажется, проблема была не в том, что мой класс только заголовок, а в том, что я вызвал gcov

gcov unittest_myclass.cpp -o .obj/

если я вместо этого запустить его с

gcov *.cpp -o .obj/

это сообщает

File '../include/myclass.h'
Lines executed:95.56% of 248
Creating 'myclass.h.gcov'

и в результате myclass.h.gcov файл выглядит намного больше, чем я ожидал.

1

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

Других решений пока нет …

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