Почему 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. Они имеют помеченную информацию, включая "Источник:", полный путь к исходному исходному файлу.