Существует код для объединения .gcda
файлов, но, к сожалению, он похоронен в libgcov.a
, который собирается как часть gcc.Если вы выйдете (или каким-либо образом вызовете __gcov_flush()
) программу, скомпилированную с покрытием, она фактически обнаружит уже существующие .gcda
файлы, загрузит их, объединит их данные с данными запущенной программы и сохранит их обратно.Я не знаю ни одного инструмента, который обеспечивает эту функциональность в командной строке.Даже с libgcov.a
у вас, вероятно, нет полезных хуков, чтобы делать то, что вы хотите, и вам придется взять исходный код из дистрибутива gcc-core и изменить его.
То, что я делал в прошлом, это просто извлекал вседанные в аннотированный источник (.gcov
) и агрегировать на этом уровне.Формат .gcda
способен хранить намного больше, чем информация о покрытии строк (например, число ветвей), а агрегация libgcov.a
знает, как их объединить (для некоторых это не так просто, как суммирование).