【问题标题】:how to change the path of source file which was referred gcda?如何更改引用 gcda 的源文件的路径?
【发布时间】:2017-03-21 19:15:50
【问题描述】:

当我使用“--coverage -fprofile-arcs -ftest-coverage”构建我的项目进行覆盖测试时,然后将构建和源代码移动到另一个用户目录以执行测试。我会遇到很多问题比如“xxx/cc/cc/getopt_log.c:cannot open source file”

详情如下: 处理cs/CMakeFiles/cfa/__/src/base/fault_injection.c.gcda /home/cov/build/xfcq/src/base/fault_injection.c:无法打开源文件

“/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

你有解决办法吗?

【问题讨论】:

    标签: code-coverage gcov lcov


    【解决方案1】:

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

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

    如果您只指定--coverage,那么它也适用于编译和链接。(但请记住在这两个地方都积极使用它)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-21
      • 2020-05-04
      • 2012-06-07
      • 2019-11-06
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      相关资源
      最近更新 更多