11.1 Введение в gcov-tool ¶
gcov-tool — это автономный инструмент для обработки файлов профилей gcda компилятора GCC.
Текущая версия gcov-tool поддерживает следующие функции:
- слияние двух наборов профилей с весами.
- чтение одного набора профилей и перепись содержимого профиля. Можно масштабировать или нормализовать значения подсчётов.
Примеры использования этого инструмента:
- Сбор профилей для различных наборов входных данных и использование этого инструмента для их слияния. Можно указать вес, чтобы учесть относительную важность каждого входного набора.
- Перепись профиля после удаления подмножества файлов gcda, сохраняя при этом согласованность сводного отчёта и гистограммы.
- Также его можно использовать для отладки или работы с кодом libgcov, так как инструмент использует большую часть кода, что и библиотека выполнения.
Обратите внимание, что для операции слияния профиль, созданный автономно, может содержать немного отличающиеся значения от онлайн-слитого профиля. Вот список типичных различий:
- различия в гистограммах: Этот автономный инструмент пересчитывает гистограмму после слияния счётчиков. Полученная гистограмма, следовательно, точна. Онлайн-слияние не обладает такой возможностью — гистограмма сливается из двух гистограмм, и результат является приближением.
- различия в контрольной сумме сводного отчёта: Контрольная сумма сводного отчёта использует операцию CRC32. Значение зависит от порядка связанного списка объектов gcov-info. Этот порядок в gcov-tool отличается от порядка в онлайн-слиянии. Ожидается, что контрольные суммы сводного отчёта будут отличаться. Это не имеет большого значения, так как компилятор нигде не использует эту контрольную сумму.
- различия в значениях счётчиков профиля значений: Некоторые значения счётчиков профиля значений зависят от времени выполнения, например, адреса кучи. Нормально видеть некоторые различия в таких счётчиках.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.4.0/gcc/Gcov-tool-Intro.html