Как запустить avr-gcov в файле скетча .ino

Я новичок в Arduino и gcov. У меня есть файл скетча .ino, avr-gcov и avr-gcc из библиотеки Arduino в том же каталоге. Может ли кто-нибудь указать мне шаги, которые я должен предпринять, чтобы запустить avr-gcov в моем файле .ino и получить файл .gcov?

Это то, что я пробовал до сих пор. Когда я бегу

./avr-gcov имя_файла.ino,

выдает ошибку имя_файла.gcno: невозможно открыть файл заметок. Мое предположение заключалось в том, что мне нужно создать файл .gcno перед запуском gcov. Поэтому я попытался создать его с помощью команды

./avr-gcc -c -Wall -pg -fprofile-arcs -ftest-coverage имя_файла.ino.

Но при этом появляется предупреждение: входной файл компоновщика не используется, поскольку компоновка не выполнена и ничего не дает.

Я попытался создать объектный код из файла скетча, передав флаг -o, но это выдает ошибку avr-gcc: фатальная ошибка: -fuse-linker-plugin, но liblto_plugin .so не найден.

Мы будем признательны за любую помощь.

, 👍0

Обсуждение

почему вы хотите использовать gcov?, @jsotola

Файл скетча очень большой. Я хотел бы получить покрытие кода и определить блоки, которые достигаются чаще, и создать граф потока управления на основе этого., @Md Jabir Hossain


1 ответ


2

Покрытие кода "gcov" имеет некоторые предпосылки:

  1. Инструментальный код для подсчета количества потоков управления, достигающих определенных точек программы. Это делается с помощью вариантов, которые вы пробовали.
  2. Связывание с библиотекой поддержки. Это делается с помощью вариантов, которые вы пробовали. Результатом является "gcno" файл для каждой единицы перевода.
  3. Эта вспомогательная библиотека ожидает, что файловая система будет хранить накопленные значения счетчиков.
  4. При запуске приложения библиотека поддержки создает файл "gcda" файл для каждой единицы перевода. В этом файле хранятся накопленные значения счетчиков.
  5. "gcov" ожидает, что все эти "gcno" и "gcda" файлы для создания аннотированного списка.

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

Итак, что вы можете сделать сейчас? Есть несколько вариантов, но этот сайт не подходит для того, чтобы предлагать вам готовые решения.

  1. Вы можете скомпилировать скетч для ПК. Для этого вам необходимо предоставить все используемые функции Arduino, например, в качестве макетов или симуляции.
  2. Вы можете предоставить недостающие функции самостоятельно, какое-то постоянное хранилище и, наконец, передать данные как "gcda" файлы на свой ПК. (Это звучит сложно и требует больших ресурсов, и это так. Однако это выполнимо, я сделал это много лет назад с другой встроенной системой и прежней версией "gcov".)
  3. Воздержитесь от использования "gcov" и попробуйте другие подходы к поиску ваших горячих точек. Например, переключайте разные контакты порта и/или с разными шаблонами, чтобы буквально «видеть». какой код выполняется. Для этого вам понадобится хороший осциллограф или логический анализатор.
,