【问题标题】:lcov for multiple directories containing gcda fileslcov 用于包含 gcda 文件的多个目录
【发布时间】:2012-05-22 23:52:22
【问题描述】:

我想使用 gcov 和 lcov 生成覆盖率报告。

到目前为止我做了什么:-

1. I compiled my code using --fprofile-arcs and -fprofile-coverage in
g++.

2. I have linked using lcov.

3. I have .gcno files with th e.o location.

4. When I execute binary, it is resulting into .gcda files.

我必须做什么:-

我必须使用这些数据文件 (.gcda) 并希望使用 lcov 创建一个干净的报告。

问题:-

有多个目录,其中有源文件,在每个目录中我创建一个 obj/ARCH 目录来保存目标文件。

因此最终的目录结构将是:-

  proto  ----> MJ1 ----> MJ2 ----> MJ3 ----> MJ4 ----> MJ5

  MJ1 ----> .cpp 

      ----> obj/linux/*.o *.gcno *.gcda 

  MJ2 ----> .cpp 

      ----> obj/linux/*.o *.gcno *.gcda 

与 M3、M4、M5 相同。

我正在从 proto 级别执行 lcov,它会找到 .gcda 文件,但在查找 .h 和 .C 文件时会出现一些错误。知道如何使此流程路径独立吗?

Error:-
../MjUtil/glob.h:cannot open source file
../MjUtil/MJError.h:cannot open source file
../MjUtil/OsStatisticsFile.h:cannot open source file

提前致谢。

【问题讨论】:

  • 文件夹 MJxx 是否在同一级别?

标签: gcov lcov


【解决方案1】:

您是否尝试为 lcov 提供 --base-directory . 选项?

【讨论】:

    【解决方案2】:

    你可以多次传递--directory标志,lcov会依次解析每一个。

    【讨论】:

      【解决方案3】:

      通常最好在编译 CPP 时尝试绝对路径。

      此外,它不应该取决于您运行 lcov 的目录。例如:

      lcov -c -d ../../../src -o lcov.info

      并且 src 目录包含:

      main.cpp main.gcno main.gcda

      即使 ma​​in.gcno 文件包含 ma​​in.cpp 的相对路径,lcov 也会处理它。

      您还应该确保没有移动 gcda/gcno 文件。通过脚本或手动。 如果它们被移动了,当然相对路径会不正确,lcov 将无法找到源。

      【讨论】:

        猜你喜欢
        • 2019-07-30
        • 1970-01-01
        • 1970-01-01
        • 2014-02-05
        • 1970-01-01
        • 1970-01-01
        • 2013-05-03
        • 2015-03-12
        • 2014-09-14
        相关资源
        最近更新 更多