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