gcda-файлы не генерируются при выполнении функциональных тестовых случаев на инструментированном образе - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь создать покрытие для файлов C (проект Yocto).

Итак, я добавил флаги gcov "- g -O0 --coverage" в Makefile.Я из большинства доступных модулей.

Он генерировал файлы ".gcno" во время компиляции каждого модуля с флагами покрытия.

Я создал изображение из всех этих модулей и загрузил его втестовое устройство и запуск функциональных тестовых случаев.

Я могу найти путь к файлам "gcda", используя команду строки из процесса, на котором выполняется тестовое устройство.

Итак, у меня естьиспользовал режим gdb для очистки покрытия с помощью команды «__gcov_flush» после присоединения идентификатора процесса к gdb.

Это приводит к ошибке «Нет символа __gcov_flush в текущем контексте».Пожалуйста, предложите мне, что может быть причиной этой ошибки.

1 Ответ

0 голосов
/ 14 февраля 2019

Согласно комментариям, невозможно напрямую собрать ядро ​​Linux с флагами компилятора покрытия и предположить получение значимых метрик покрытия.

Метрики покрытия кода фактически требуют, чтобы некоторые файловые системы были доступны длязапишите данные покрытия во время выполнения (например, * .gcda файлы).

Если вы хотите включить покрытие кода для ядра Linux, здесь - это документация о том, как включить поддержку с помощьювиртуальная файловая система GCOV для сбора метрик покрытия.

Кроме того, если вы кросс-компилируете для другой архитектуры, то, вероятно, вам придется использовать инструмент кросс-gcov для сбора метрик покрытия после того, как вы захватили *.gcno файлы после выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...