Почему gcov создает данные о покрытии кода для заголовков STL?

Когда я запускаю gcov foo.cpp, он не только генерирует отчет покрытия кода для foo.cpp, но и для всех заголовков STL, используемых foo.cpp.

Есть ли способ предотвратить это? Он, кажется, игнорирует стандартные заголовки библиотек, такие как <ctime>.

Edit

Просто просмотрел этот пост в списке рассылки gcc:

Re: gcc, gcov и STL

Ответ 1

-r - только относительный

Только выводить информацию об исходных файлах с относительным именем пути (после устранения префикса источника). Абсолютные пути обычно представляют собой файлы системных заголовков, и охват любых встроенных функций в них обычно неинтересен.

Ответ 2

Любые файлы заголовков С++ со встроенным кодом получат инструментарий охвата при компиляции, и результаты будут видны с помощью gcov. Одним из полезных флагов является "gcov -long-file-names" (или просто -l), который создает уникальный выходной файл .gcov для каждого заголовка, включенного данным файлом. Файлы имеют такие имена, как "foo.cpp ## bar.h.gcov". Это облегчит вам удаление после этого "rm *\#\# *. Gcov" (осторожно с этими обратными косыми чертами!)

Другим способом обнаружения этих файлов является поиск строк с номером 0 в выводе gcov. Они имеют помеченную информацию, включая "Источник:", полный путь к исходному исходному файлу.