如何更改引用gcda的源文件的路径?

时间:2016-11-08 08:30:40

标签: code-coverage gcov lcov

当我使用" - coverage -fprofile-arcs -ftest-coverage"构建我的项目进行覆盖测试时,然后将构建和源移动到其他用户目录以执行测试。我会遇到很多问题,例如" xxx / cc / cc / getopt_log.c:无法打开源文件"

详情如下: 处理cs / CMakeFiles / cfa / __ / src / base / fault_injection.c.gcda /home/cov/build/xfcq/src/base/fault_injection.c:cannot open source file

" /home/cov/build/xfcq/src/base/fault_injection.c"的路径;是构建环境的路径,如何将其更改为相对路径或我指定的路径。

我尝试使用GCOV_PREFIX和GCOV_PREFIX_STRIP,这些对我来说效果不佳。

我也尝试为lcov添加-b选项,它对我来说也不太好用。 例如,lcov --gcov-tool = / bin / gcov -d。 -b xx / src -t" xfcq" -o test_cov.info

你有意解决吗?

1 个答案:

答案 0 :(得分:1)

使用gcov覆盖过程,您应该在构建项目后不要移动文件,而是应该修改自动构建脚本以将所有内容构建到所需位置。

使用指定选项编译项目时,会为每个源文件生成*.gcno个文件,这些文件必须是相关源文件详细信息的流程图。
因此,只要执行任何语句行以生成包含所有执行信息的*.gcda文件,目标文件就会以这样的方式进行检测:它们应该触发函数(由编译器添加以生成覆盖信息)。 注意:我可以看到您指定了三个有问题的选项(--coverage -fprofile-arcs -ftest-coverage),这又是错误的,因为--coverage可以替代另外两个。

如果你只指定--coverage那么它也会用于编译和链接。(记得在两个地方积极使用它)