【问题标题】:Missing certain GCDA files after test execution测试执行后缺少某些 GCDA 文件
【发布时间】:2017-11-04 21:32:40
【问题描述】:

我目前面临为静态库的覆盖数据生成 .gcda 文件的问题。我可以获得大多数文件的覆盖率数据,但不是全部。

我会将缺少覆盖率数据的目标文件称为 X。

注意事项:

  • 我已经编译了库并使用适当的标志测试了可执行文件。
  • 为所有对象生成 .gcno 文件,包括 X。
  • 为 MOST 对象生成 .gcda 文件,X 除外。
  • X 目标文件的符号转储在其反汇编中包含 gcov 符号。

运行使用 X 的测试时,会为其他文件生成 .gcda 文件,而不是 X。

会发生什么阻止生成单个 .gcda 文件?

-

操作系统:OS X 10.12

LLVM 编译器版本:8.0.0

【问题讨论】:

  • 对象 X 是否与 gcov 库链接?此外,库 X 源的 *.gcda 文件将在从源构建库 X 的路径中生成。
  • 是的。 .gcda 文件正在为所有对象生成,但少数。它们都链接并使用适当的标志构建,如 xcodebuild 输出所示。

标签: c++ macos llvm code-coverage gcov


【解决方案1】:

我认为您可能需要为 gcov 启用内核。
启用 CONFIG_DEBUG_FS、CONFIG_GCOV_KERNEL、CONFIG_GCOV_FORMAT_AUTODETECTCONFIG_GCOV_PROFILE_ALL

静态库的 gcda 文件将在 /sys/kernel/debug/gcov/ 下

【讨论】:

  • 这将如何防止生成 1 个 .gcda 文件?我可以找到这些变量的信息是关于内核的代码覆盖率。我会试试这个并告诉你结果。
  • 那没有产生任何进一步的结果。
  • 抱歉,虽然您说的是内核静态库。
  • 也许你可以试试这个stackoverflow.com/questions/10011222/…
【解决方案2】:

问题似乎在于测试项目和库项目中都包含可疑文件。 .gcda 文件在测试的中间文件中找到,但在库的中间文件中不存在。

奇怪的问题,也很难调试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多