10.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-10.5.0/gcc/Gcov-Intro.html