用于多线程应用程序的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版本,因此我们可以快速评估覆盖率。