как запустить gcov на голом железе (без файловой системы) - PullRequest
1 голос
/ 24 июня 2019

Я использую C ++ на Cortex M4 и хочу начать выполнять автоматические модульные тесты и покрытие.

gcov записывает свои выходные файлы - .gcno, .gcda - в цель , что запрещено, поскольку у меня нет файловой системы.

ВОПРОС

Можно ли "перехватить и перенаправить" эти записи на ПК, используя gdb?

Я хочу автоматизировать эти тесты с помощью скрипта Python:

  1. Получить модульный тест из базы данных
  2. Компиляция
  3. Перевод на целевую доску
  4. Run
  5. Перенаправление результатов на ПК

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Похоже, что некоторые люди делают именно это (используя gcov на baremetal)

https://dzone.com/articles/gnu-code-coverage-on-embedded-targets http://allsoftwaresucks.blogspot.com/2015/05/gcov-is-amazing-yet-undocumented.html

0 голосов
/ 25 июня 2019

Итак, я не знал gcov, спасибо.

Быстрый просмотр man gcov показал, что он у меня есть в моей системе и существует следующая опция:

-t, --stdout Output to stdout instead of a file

Я не делал Python внекоторое время, но вы сможете создать файл только для памяти, и, предположив, что дескриптор открытого файла равен 8, используйте:

gcov -t [whatever you are doing] >&8

Аргумент -t сообщает gcov:печатать на стандартный вывод вместо записи в файл, и> & 8 перезаписывает стандартный вывод (как видно из исполняемой программы) в качестве дескриптора файла 8 вместо 1 (в большинстве случаев в большинстве случаев unix / posix / whateveryoucallit).

Это, конечно, в bash, который вы можете либо вызывать из python, либо транскодировать, чтобы достичь этого в python.

Мне не нужно это пробовать, поэтому, если это помогает (или если это не так)'t) не забудьте оставить отметку, чтобы помочь будущим читателям.

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