11.1 Введение в gcov
gcov — это программа для проверки покрытия кода тестами. Используйте её вместе с GCC для анализа программ, чтобы создавать более эффективный и быстро работающий код, а также выявлять непроверенные части программы. gcov можно использовать как инструмент профилирования, который поможет определить, где оптимизация кода даст наибольший эффект. Также можно использовать gcov вместе с другим инструментом профилирования — gprof, — чтобы оценить, какие части кода требуют наибольшего вычислительного времени.
Инструменты профилирования помогают анализировать производительность кода. С помощью профилировщика, например gcov или gprof, можно получить некоторые основные статистические данные о производительности, например:
- как часто выполняется каждая строка кода
- какие строки кода действительно выполняются
- сколько вычислительного времени занимает каждый участок кода
Зная, как работает скомпилированный код, можно изучить каждый модуль и определить, какие модули следует оптимизировать. gcov помогает определить, над чем следует работать при оптимизации.
Разработчики программного обеспечения также используют проверку покрытия кода вместе с наборами тестов, чтобы убедиться, что программа действительно готова к выпуску. Наборы тестов проверяют, работает ли программа ожидаемым образом; программа проверки покрытия определяет, какая часть программы проверяется набором тестов. Затем разработчики могут определить, какие типы тестов нужно добавить в наборы, чтобы улучшить и тестирование, и конечный продукт.
Если вы планируете использовать gcov, компилируйте код без оптимизации: при оптимизации несколько строк кода могут объединяться в одну функцию, и в результате вы получите недостаточно информации для поиска «узких мест», где код тратит много процессорного времени. Кроме того, поскольку gcov собирает статистику по строкам (с наименьшей точностью), лучше всего он работает с таким стилем программирования, при котором в каждой строке находится только одна инструкция. Если используются сложные макросы, раскрывающиеся в циклы или другие управляющие конструкции, статистика менее полезна — она содержит данные только для строки, в которой находится вызов макроса. Если сложные макросы ведут себя как функции, эту проблему можно решить, заменив их встраиваемыми функциями.
gcov создаёт файл журнала sourcefile.gcov, в котором указано, сколько раз выполнялась каждая строка исходного файла sourcefile.c. Эти файлы журнала можно использовать вместе с gprof для более точной настройки производительности программ. gprof предоставляет данные о времени, которые можно использовать вместе с информацией, полученной с помощью gcov.
gcov работает только с кодом, скомпилированным GCC. Он несовместим с любыми другими механизмами профилирования или проверки покрытия кода.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Gcov-Intro.html