用于多线程应用程序的GCOV

时间:2020-03-05 18:45:56  来源:igfitidea点击:

是否可以使用gcov进行多线程应用程序的覆盖率测试?

我已经对代码库进行了一些琐碎的测试,但是最好对我们正在实现的覆盖范围有所了解。如果gcov不适合,那么任何人都可以推荐一个替代工具(可能是oprofile),最好是有一些很好的入门文档。

解决方案

回答

我们当然已经使用gcov来获取有关多线程应用程序的覆盖率信息。

我们想使用gcc 4.3进行编译,该代码可以覆盖动态代码。

我们使用-fprofile-arcs -ftest-coverage选项进行编译,该代码将生成.gcda文件,然后gcov可以对其进行处理。

我们对产品进行单独构建,并收集有关内容,运行单元测试和回归测试。

最后,我们使用lcov生成HTML结果页面。

回答

我还没有使用gcov进行多线程覆盖工作。但是,在MacOS上,Apple的Shark工具可处理多个线程。它主要是探查器,但也可以提供覆盖率信息。

http://developer.apple.com/tools/sharkoptimize.html

回答

Gcov适用于多线程应用程序。仪器架构已正确序列化,因此我们将获得高保真度的覆盖率数据。

我建议将gcov与lcov结合使用。这将为我们提供从完整项目到单个源文件的出色报告。

lcov还为源代码提供了很好的颜色编码HTML版本,因此我们可以快速评估覆盖率。