Мне нужно выполнить модульное тестирование для драйверов на борту с помощью инструмента gcov. Когда gcov используется в архитектуре x86, он будет создавать файл .gcda после выполнения программы. Но когда дело доходит до платы на основе рук файлы .gcda не создаются. Таким образом, без этого я не мог использовать инструмент gcov. Мой вопрос - как использовать этот инструмент gcov в кросс-компиляции. ». Спасибо заранее.Как использовать gcov в кросс-компиляторе?
ответ
gcov
Структуры кода/данных привязаны к файловой системе хоста, а программные цепи кросс-компиляторов не имеют никакого порта или конфигурации, чтобы изменить это поведение. Если ваш объектный файл равен ~/my-project/abc.o
, то gcov
структуры данных в памяти, созданные/обновленные с помощью кода инструментального кода, равны ~/my-project/abc.gcda
, и все эти пути находятся на вашем хост-компьютере. Инструментированный код, запущенный на удаленной системе (в вашем случае плата ARM), как вы можете видеть, не может получить доступ к этим путям, и это основная причина, по которой вы не видите файлы .gcda
в корпусе платы ARM.
Для получения общего метода получения файлов .gcda
, чтобы обойти эту проблему, см. https://mcuoneclipse.com/2014/12/26/code-coverage-for-embedded-target-with-eclipse-gcc-and-gcov/. В этой статье представлен хакерский метод для взлома функций gcov и вручную сбрасываются структуры данных gcov в файлы .gcda
на хосте.
Я использовал вышеупомянутый блог, чтобы сделать покрытие кода для моего проекта ARM. Однако; Я столкнулся с еще одной проблемой gcc-ошибки в моей версии инструментальной цепочки (версия инструментальной линейки GNU, доступная в октябре/ноябре 2016 года), где вы не смогли бы вломиться в функции gcov и завершить процесс, упомянутый в вышеупомянутом блоге, так как соответствующие функции gcov зависают с бесконечным циклом. Вы можете или не можете столкнуться с этой проблемой, потому что я не уверен, исправлена ли ошибка. Если вы столкнулись с этой проблемой, решение доступно в моем блоге https://technfoblog.wordpress.com/2016/11/05/code-coverage-using-eclipse-gnu-arm-toolchain-and-gcov-for-embedded-systems/.
Ссылка на потенциальное решение всегда приветствуется, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы ваши друзья-пользователи имели представление о том, что это такое и почему оно есть. Всегда указывайте наиболее значимую часть важной ссылки, если целевой сайт недоступен или постоянно находится в автономном режиме. – Marcs
- 1. Как использовать gcov с CMake
- 2. Изменить размер gcc gcov gcov
- 3. iPhone: Как я могу использовать gcov?
- 4. Ошибка сегментации в gcov
- 5. Как использовать gcov с QMake для покрытия кода
- 6. Как использовать «gcov», даже если возникает ошибка сегментации?
- 7. NO GCOV DATA FOUND
- 8. GCOV для многопоточных приложений
- 9. Интеграция GCOV с Bjam
- 10. Как игнорировать файлы заголовков в gcov-выходе?
- 11. Компиляция googletest для gcov
- 12. Понимание ветвей в файлах gcov
- 13. Толкование отчета Gcov
- 14. Операции gcov и switch
- 15. Настройка gcov в Xcode 3.1
- 16. lcov or gcov - как анализировать большой проект
- 17. Маркеры исключения для gcov
- 18. Где символы gcov?
- 19. gcov для кода ядра freebsd
- 20. Bjam для анализа покрытия gcov?
- 21. Как запустить Gcov над установленным приложением Cocoa?
- 22. Как подавить вставку шаблонов с помощью gcov
- 23. Как получить более точные результаты от gcov?
- 24. Как сгенерировать файл .gcov из llvm-cov?
- 25. Результат фильтра gcov и файлы
- 26. Почему gcov вызовет сбой программы?
- 27. gcov не создает файлы покрытия
- 28. gcov с универсальными двоичными файлами
- 29. Что касается вывода gcov в ядре Linux?
- 30. gcov создает файлы .gcov в текущем каталоге. Есть ли способ изменить это?
Пожалуйста, прочитайте руководство по этой теме (https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Cross-profiling.html#Cross-profiling) и вернитесь, если у вас все еще есть вопросов. Вы можете указать версию. –
Ваш вопрос уже ответили в этой старой дискуссии: [Как сделать покрытие кода на встроенный] [1] [1]: http://stackoverflow.com/questions/8565031/how-to-do -code-coverage-on-embedded – FlorianB