gcc - 使用 gcov,是否可以合并到 .gcda 文件?

标签 gcc code-coverage gcov lcov

我有相同的源文件(C 和 Obj-C)被编译成两个目标:单元测试可执行文件和实际产品(然后进行集成测试)。这两个目标构建到不同的位置,因此目标文件、.gcno 和 .gcda 文件是分开的。并非所有源文件都会编译到单元测试中,因此并非所有对象都会存在于单元测试中。所有源文件都编译到产品版本中。

有没有办法组合两组 .gcda 文件以获得单元测试和集成测试的总覆盖率(因为它们在产品版本上运行)?

我正在使用 lcov。

Mac OS X 10.6、GCC 4.0

谢谢!

最佳答案

最后我设法通过lcov解决了我的问题。

基本上我所做的如下:

  • 使用标志 -fprofile-arcs -ftest-coverage --coverage 编译应用程序
  • 将应用程序的副本分发到每个节点。
  • 在每个节点中并行执行应用程序。 (此步骤将覆盖信息生成到访问主机中的应用程序目录中)
  • 让 lcov 完成他的工作:
    • lcov --directory src/--capture --output-filecoverage_reports/app.info
  • 生成 html 输出:
    • genhtml -ocoverage_reports/coverage_reports/app.info

我希望这对某人有帮助。

关于gcc - 使用 gcov,是否可以合并到 .gcda 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3166198/

相关文章:

c - Gcov 有效,但 Gcovr 无效

c++ - 如何正确设置SonarQube cfamil.gcov?

c - 在多进程 scanf 的 MPI 中只接受一次输入并将垃圾值分配给其他?

c++ - 链接器不包括未引用的数组

android - Kotlin JaCoCo,无覆盖 -> IllegalClassFormatException ...请提供原始的非仪器类

c++ - gcov 函数未执行,但行已执行

c - 系统string2.h头文件优化时产生编译错误

c - gcc 无法在动态库中找到对对象的引用

c - 靶心覆盖率,代码覆盖率为 0%

Android/Emma coverage.ec 输出无法导入 EclEmma