2014-11-27 2 views
1

Мне нужно выполнить модульное тестирование для драйверов на борту с помощью инструмента gcov. Когда gcov используется в архитектуре x86, он будет создавать файл .gcda после выполнения программы. Но когда дело доходит до платы на основе рук файлы .gcda не создаются. Таким образом, без этого я не мог использовать инструмент gcov. Мой вопрос - как использовать этот инструмент gcov в кросс-компиляции. ». Спасибо заранее.Как использовать gcov в кросс-компиляторе?

+0

Пожалуйста, прочитайте руководство по этой теме (https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Cross-profiling.html#Cross-profiling) и вернитесь, если у вас все еще есть вопросов. Вы можете указать версию. –

+0

Ваш вопрос уже ответили в этой старой дискуссии: [Как сделать покрытие кода на встроенный] [1] [1]: http://stackoverflow.com/questions/8565031/how-to-do -code-coverage-on-embedded – FlorianB

ответ

0

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/.

+1

Ссылка на потенциальное решение всегда приветствуется, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы ваши друзья-пользователи имели представление о том, что это такое и почему оно есть. Всегда указывайте наиболее значимую часть важной ссылки, если целевой сайт недоступен или постоянно находится в автономном режиме. – Marcs

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