Gcov 生成空的.gcda文件

Gcov 生成空的.gcda文件,gcov,lcov,Gcov,Lcov,我使用gcov进行代码覆盖率分析,使用lcov生成覆盖率的图形输出。这对于至少执行了对象文件的某些部分的代码文件非常有效。我希望能够跟踪尚未执行的文件。我怀疑这与没有为这些文件生成.gcda文件有关。是否有办法强制为所有对象文件生成.gcda文件,而不考虑执行情况?对于所有正确编译和链接的文件,将有一个.gcda文件。如果发现*.gcda文件丢失,请检查*.gcno文件是否存在。如果未检查是否所有Makefiles都正确生成: -ftest coverage:.gcno notes文件是在使用

我使用gcov进行代码覆盖率分析,使用lcov生成覆盖率的图形输出。这对于至少执行了对象文件的某些部分的代码文件非常有效。我希望能够跟踪尚未执行的文件。我怀疑这与没有为这些文件生成.gcda文件有关。是否有办法强制为所有对象文件生成.gcda文件,而不考虑执行情况?

对于所有正确编译和链接的文件,将有一个.gcda文件。如果发现*.gcda文件丢失,请检查*.gcno文件是否存在。如果未检查是否所有Makefiles都正确生成:

  • -ftest coverage:.gcno notes文件是在使用此函数编译源文件时生成的
  • -fprofile arcs:.gcda count数据文件是在执行包含使用GCC-fprofile arcs选项生成的对象文件的程序时生成的

更多信息:

此处概述了执行此操作的步骤:

为测试用例捕获数据时的建议步骤:

  • 创建基线覆盖率数据文件

    lcov-c-i-d appdir-o app_base.info

  • 执行测试

    appdir/test

  • 创建测试覆盖率数据文件

    lcov-c-d appdir-o app_test.info

  • 结合基线和测试覆盖率数据

    lcov-a app\u base.info-a app\u test.info-o app\u total.info


  • 我也想这样做。我正在处理一个代码库,其中单元测试被编译为每个名称空间的单独可执行文件。我可以用覆盖率编译每个类,并得到测试中涉及的类的结果。但是有些文件还没有为它们创建单元测试,所以没有考虑这些测试。它们甚至不作为测试编译的一部分进行编译。我想要的是以某种方式为任何.cpp生成一个空的初始.gcda。非常感谢您的回答。顺便说一句,基线覆盖率也可以在执行测试后生成。生成*.gcno后,将生成*.gcda文件,但仅在测试期间生成。如果源文件有*.gcno文件但没有*.gcda文件,则gcov>=4.7将忽略该文件。看见