【问题标题】:lcov/gcov not outputting coverage for header fileslcov/gcov 不输出头文件的覆盖率
【发布时间】:2016-07-20 21:24:18
【问题描述】:

我能够正确使用 gcov(至少我认为可以),但是在我的某些目录中,我无法输出某些头文件的覆盖率。例如,myfile.cpp 显示覆盖范围,但 myfile.h(或 myfile.hpp)不显示。任何帮助将不胜感激。

【问题讨论】:

  • 你的标题是否包含函数定义?还是只是声明?
  • 有几个函数定义。我想我找到了问题的一部分。一些 .gcno 文件没有被创建。我会收到一条错误消息,告诉我我到达了意外的文件末尾。我检查并删除了一个 .gcno 文件(和 .gcda 文件),重新编译、重建、运行 lcov,然后对每个文件意外结束的文件重复。
  • 现在我的问题是 .gcda 文件中的时间戳不匹配,因为我必须重新编译文件意外结束的文件。我的问题是,如果我必须这样做,有没有办法重新编译和同步 .gcda 时间戳?
  • 更新。我还缺少一些头文件。
  • 如果有帮助,我正在运行 gcc 4.4.7。我听说早期版本的 gcc 存在问题。

标签: gcov lcov


【解决方案1】:

时间戳问题仅仅是因为您使用相同的源来创建多个输出。例如,您的 makefile 生成调试对象,然后生成优化对象。或者您使用相同的源来制作静态和动态库。或者也许编译thing.c 以创建.o 以添加到您的静态存档,但也编译thing.c-DMAKE_MAIN 以创建测试程序。

无论如何,每次编译源代码时,GCOV Notes 文件 (.gcno) 都会被替换,所以现在当您运行代码分析时,.gcno 比可执行文件更新,因此您可以获得时间戳错误。

【讨论】:

    猜你喜欢
    • 2019-09-14
    • 2020-03-10
    • 2015-04-09
    • 2021-09-05
    • 2011-09-15
    • 1970-01-01
    • 2012-09-16
    • 2013-09-16
    • 1970-01-01
    相关资源
    最近更新 更多