Gcov

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
gcov
Тип Покрытие кода
Операционная система Unix-like
Лицензия GNU General Public License
Сайт gcc.gnu.org/onlinedocs/g…

Gcov — свободно распространяемая утилита для исследования покрытия кода. Gcov генерирует точное количество исполнений для каждого оператора в программе и позволяет добавить аннотации к исходному коду. Gcov поставляется как стандартная утилита в составе пакета GCC.[1]

Утилита gcov предоставляет информацию о том, сколько раз исполнился во время работы программы каждый участок кода.[2] Аннотированный исходный код сохраняется в новом файле, содержащим счетчики исполнения и текст программы. В отличие от gprof (англ.) не создает каких-либо данных, зависящих от длительности работы кода. Работает, в основном, с программами, скомпилированными с помощью GNU GCC. Не совместим с другими механизмами профилирования или тестирования покрытия.[3]

Описание[править | править код]

gcov создает файл с анализом покрытий для специальным образом инструментированных программ. Опции -fprofile-arcs -ftest-coverage должны использоваться при компиляции программ для анализа покрытия. Первая опция приводит к сохранению статистики исполнения строк исходного файла, а вторая — к записи статистики условных переходов (ветвлений).[2] После запуска такой программы будет создано несколько файлов с расширениями «.bb», «.bbg», «.da», которые могут анализироваться gcov. Он принимает в качестве аргумента командной строки имена файлов с исходными текстами и производит аннотированный листинг. Перед каждой строкой исходного кода указывается количество её исполнений; те строки, которые не исполнились ни разу помечаются префиксом «#####».[2]

gcov создает файл имя_исходника.gcov в котором индицируется сколько раз исполнили каждую строку исходного файла имя_исходника.c.

Опции командной строки[править | править код]

Опции Gcov:[4][5]

  • -h (--help): Краткая помощь
  • -v (--version): Отображение версии программы
  • -a (--all-blocks): Печать счетчиков для всех базовых блоков, не только для основного блока в строке
  • -b (--branch-probabilities): Сохранить в выходной файл частоты условных переходов и отобразить статистику переходов на стандартный поток вывода. Безусловные переходы по этой опции не показаны, пока не подана опция -u
  • -c (--branch-counts): Сохранить статистику переходов в виде точных величин, а не процентов вероятности
  • -n (--no-output): Не создавать выходной файл gcov
  • -l (--long-file-names): Создавать длинные имена для файлов, включенных в исходник по директиве #included. К примеру, если заголовочный файл x.h содержит исполнявшийся код и был включен в файл a.c, то запуск gcov на a.c создаст файл a.c##x.h.gcov вместо x.h.gcov. Это полезно когда x.h включен многократно в различные исходные файлы
  • -p (--preserve-paths): Сохранять полный путь в именах создаваемых .gcov файлов. Без этой опции используется лишь имя файла, с ней — имя файла и путь к нему, в котором все символы '/' заменены на символы '#'; каталоги '.' удалены; а компоненты '..' переименованы в '^'. Полезно в случаях, когда исходные файлы хранятся в нескольких каталогах
  • -f (--function-summaries): Выводить статистику по функциям в дополнение к статистике по файлам.
  • -u (--unconditional-branches): Включать статистику по безусловным переходам в статистику переходов.
  • -d (--display-progress): Отображать прогресс обработки.

Графический интерфейс[править | править код]

Существует графический интерфейс Lcov для gcov. Он собирает файлы gcov для нескольких файлов с исходниками и создает комплект HTML страниц с кодом и сведениями о покрытии. Также генерируются страницы для упрощения навигации. Lcov поддерживает покрытие строк, функций, ветвлений.[6]

См. также[править | править код]

Примечания[править | править код]

  1. How Gcov works-tool part of GCC, <http://xview.net/papers/gcov/code_coverage_gcov.pdf>. Проверено 12 февраля 2012. 
  2. 1 2 3 Brian J. Gough. An Introduction to GCC - for the GNU compilers gcc and g++ - Coverage testing with gcov.
  3. gcov man page. Проверено 12 февраля 2012. Архивировано 8 января 2013 года.
  4. gnu.org. Gcov Command line options. Проверено 11 февраля 2012. Архивировано 8 января 2013 года.
  5. linux commands. Gcov Command line options. Проверено 12 февраля 2012. Архивировано 8 января 2013 года.
  6. Lcov. Архивировано 8 января 2013 года.