2011-12-19 5 views
7

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

+1

покрытия кода MC/DC гораздо меньше, обычно делается на встраиваемых системах. Но хороший ответ на ваш вопрос требует гораздо более подробной информации о вашей системе. Какой процессор? Какая ОС? Какая компиляторная цепочка? – TJD

+1

Вам просто нужна функция записи или функция чтения и записи? Если вы просто пишете (открываете, закрываете, пишете), вы можете создать свой собственный и, возможно, вывести запись на последовательный порт, который будет храниться/регистрироваться в другом месте. –

+0

Можно ли скомпилировать и запустить тесты в системе, где вы можете использовать опцию покрытия? –

ответ

9

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

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

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

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

0

Нашего family of C/C++ test coverage tools Приборная источник кода, производя программу компиляции с вами встроенным компилятором, который будет собирать данные об охвате теста в структуру «малые» данные добавлен в программу. Это работает с различными диалектами, включая ANSI, GCC, Microsoft и GreenHills.

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

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

1

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

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

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

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

Смежные вопросы