题
是否可以使用 gcov 进行多线程应用程序的覆盖率测试?
我已经对我们的代码库进行了一些简单的测试,但如果能够了解我们正在实现的覆盖范围,那就太好了。如果 gcov 不合适,任何人都可以推荐一个替代工具(可能是 oprofile),最好有一些关于入门的良好文档。
解决方案
我们当然使用 gcov 来获取多线程应用程序的覆盖信息。
您想使用 gcc 4.3 进行编译,它可以覆盖动态代码。
你用以下命令编译 -fprofile-arcs -ftest-coverage
选项,代码将生成 .gcda 文件,然后 gcov 可以处理该文件。
我们对产品进行单独构建,并收集其覆盖范围,运行单元测试和回归测试。
最后我们使用 lcov 生成 HTML 结果页面。
其他提示
Gcov 适用于多线程应用程序。仪器架构已正确序列化,因此您将获得保真度良好的覆盖数据。
我建议结合使用 gcov 左旋病毒. 。这将为您提供从整个项目到单个源文件的出色报告。
lcov 还为您提供了源代码的漂亮颜色编码的 HTML 版本,以便您可以快速评估您的覆盖率失误。
我还没有使用 gcov 进行多线程覆盖工作。然而,在 MacOS 上,Apple 的 Shark 工具可以处理多个线程。它主要是一个分析器,但也可以提供覆盖信息。
不隶属于 StackOverflow