GCOV для многопоточных приложений
-
09-06-2019 - |
Вопрос
Можно ли использовать gcov для тестирования покрытия многопоточных приложений? Р>
Я настроил несколько тривиальных тестов нашей базы кода, но было бы неплохо иметь представление о покрытии, которое мы достигаем. Если gcov не подходит, может кто-нибудь порекомендовать альтернативный инструмент (возможно, oprofile), в идеале с хорошей документацией по началу работы.
Решение
Мы, конечно, использовали gcov для получения информации о покрытии в нашем многопоточном приложении.
Вы хотите скомпилировать с помощью gcc 4.3, который может охватывать динамический код.
Вы компилируете с параметрами -fprofile-arcs -ftest-покрытие
, и код сгенерирует файлы .gcda, которые затем gcov сможет обработать.
Мы делаем отдельную сборку нашего продукта и собираем информацию об этом, проводим модульные и регрессионные тесты.
Наконец, мы используем lcov для генерации страниц с результатами HTML.
Другие советы
Gcov отлично работает для многопоточных приложений. Архитектура измерительных приборов правильно сериализована, поэтому вы получите данные покрытия с хорошей точностью. Р>
Я бы предложил использовать gcov в сочетании с lcov . Это даст вам отличные отчеты, от полного проекта до отдельных исходных файлов. Р>
lcov также предоставляет HTML-версию вашего источника с хорошей цветовой кодировкой, чтобы вы могли быстро оценить свои ошибки покрытия. Р>
Я не использовал gcov для работы с многопоточным покрытием. Однако в MacOS инструмент Shark от Apple обрабатывает несколько потоков. Это в первую очередь профилировщик, но он также может делать информацию о покрытии.