Как сделать покрытие кода на встроенном - PullRequest
7 голосов
/ 19 декабря 2011

Я пишу проект для не встроенной системы POSIX, поэтому я не могу использовать опцию gcc --coverage (у меня нет чтения или записи).Что еще я могу сделать, чтобы произвести gcov как вывод.У меня есть функция вывода.

Ответы [ 3 ]

9 голосов
/ 20 декабря 2011

Это легче всего сделать с помощью процессора со встроенной трассировкой, конструкции платы, которая предоставляет порт трассировки, и подходящего аппаратного отладчика и связанного программного обеспечения. Например, многие устройства на базе Cortex-M включают встроенную макроячейку трассировки ARM (ETM), и это поддерживается отладчиком uVision IDE и отладчиком ULINK-Pro от Keil для обеспечения покрытия кода и трассировки на уровне команд / источника, а также профилирования в реальном времени. Преимущество аппаратной трассировки заключается в том, что она не навязчива - код выполняется в режиме реального времени.

Если у вас нет аппаратной поддержки, возможно, вам придется прибегнуть к симуляции. Многие цепочки инструментов включают в себя симулятор уровня команд, который будет выполнять трассировку, покрытие кода и профилирование, но вам, возможно, придется создавать сценарии отладки или заглушки кода, чтобы моделировать аппаратные средства для принудительного выполнения всех путей.

Третий вариант - создать код на платформе настольного компьютера с заглушками для замены целевых аппаратных зависимостей, а также выполнить тестирование и охват кода. Вы должны верить, что целевой компилятор C и тестовый системный компилятор переводят исходный код с идентичной семантикой. Преимущество здесь в том, что доступные инструменты отладки часто превосходят инструменты, доступные для встроенных систем. Вы также можете протестировать большую часть своего кода до того, как станет доступным какое-либо оборудование, и в большинстве случаев выполнять код намного быстрее, что, возможно, позволяет проводить более обширное тестирование.

Отсутствие POSIX API не исключает использование GCC, оно просто исключает использование библиотеки GNU C. Во встроенных системах без POSIX используются альтернативные библиотеки C, такие как Newlib. Newlib имеет уровень системного портирования, в котором реализованы операции ввода-вывода и базового управления кучей.

1 голос
/ 06 января 2012

Отказ от ответственности: компания (Rapita Systems), в которой я работаю, предоставляет решение для покрытия кода, предназначенное для встраиваемых приложений.

Поскольку встраиваемые системы предъявляют свои собственные, особые и широко меняющиеся требования, «лучшее» решение для кодапокрытие также широко варьируется.

  • Если у вас есть устройства на основе трассировки, такие как микросхемы ARM с деталями с поддержкой ETM или NEXUS, вы можете выполнять покрытие без контрольно-измерительных приборов с помощью отладчиков.
  • В противном случае,Скорее всего, вы столкнулись с решением на основе инструментальных средств:
    • Для решений с ограниченным объемом ОЗУ хорошим решением является запись инструментария в порт ввода / вывода
    • В качестве альтернативы, вы можете записывать инструментарий вбуфер оперативной памяти и использовать самые разные средства для извлечения этого из цели.

Конечно, доступно множество различных вариантов покрытия кода: функция, оператор,решение / филиал, MC / DC

0 голосов
/ 27 декабря 2011

Наше семейство инструментов для покрытия тестов C / C ++ использует код source , создавая программу, которую вы компилируете с помощью встроенного компилятора, которая будет собирать данные покрытия тестов в "маленький" структура данных добавлена ​​в программу. Это работает с различными диалектами, включая ANSI, GCC, Microsoft и GreenHills.

Вы должны экспортировать эту структуру данных из встроенного контекста выполнения в файл на ПК; это часто легко сделать с помощью запасного последовательного или параллельного порта и небольшого количества пользовательского кода, специфичного для вашего порта. Инструменты предоставят тестовые покрытия и сводки с полученными файлами.

Таким образом, вы можете использовать эти инструменты для сбора данных о тестовом покрытии из вашей встроенной системы в большинстве практических обстоятельств.

...