12.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-15.3.0/gcc/Gcov_002dtool-Intro.html