9

我使用 gcov 进行代码覆盖分析,使用 lcov 生成覆盖的图形输出。这适用于至少执行了目标文件的某些部分的代码文件。我希望能够跟踪根本没有执行的文件。我怀疑这与没有为这些文件生成 .gcda 文件有关。有没有办法强制为所有目标文件生成 .gcda 文件而不管执行如何?

4

2 回答 2

7

此处概述了执行此操作的过程:

http://linux.die.net/man/1/lcov

为测试用例捕获数据时的推荐过程:

  1. 创建基线覆盖数据文件

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

  2. 进行测试

    appdir/test

  3. 创建测试覆盖率数据文件

    lcov -c -d appdir -o app_test.info

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

    lcov -a app_base.info -a app_test.info -o app_total.info

于 2014-11-14T19:58:06.793 回答
0

对于所有正确编译和链接的文件,都会有一个 .gcda 文件。如果您看到缺少 *.gcda 文件,请检查 *.gcno 文件是否存在。如果它不检查是否所有的 Makefile 都正确构建:

  • -ftest-coverage : 编译源文件时生成.gcno notes文件
  • -fprofile-arcs :当执行包含使用 GCC -fprofile-arcs 选项构建的目标文件的程序时,会生成 .gcda 计数数据文件。

更多信息:https ://gcc.gnu.org/onlinedocs/gcc/Gcov.html#Gcov

于 2014-11-04T11:05:19.073 回答