【问题标题】:How to use lcov in cross compile environment.?如何在交叉编译环境中使用lcov。?
【发布时间】:2015-01-27 18:45:31
【问题描述】:

我正在对设备驱动程序进行单元测试,因为我需要使用 gcov 和 lcov 工具来生成报告。我在本机机器上编译了我的代码,并且完美生成了 .gcno 文件。然后我执行了我的输出文件基于 arm 的板和 gcda 文件也正确生成。然后我将这些文件带到我的本机并生成 .gcov 文件。

但是当我对该文件使用 lcov 时,它会显示诸如“/usr/src/geninfo line no 2414 中的负长度”之类的错误。

1.So,为此我需要做什么。? 2.还有一个问题是我正在使用“arm-none-gnueabi-”工具链(2011.03),它有单独的gcov,但可执行文件中不存在lcov。是否可以使用lcov。?如果是的话如何使用.?...提前致谢。

【问题讨论】:

  • No..I'm new 2 this.But 你为什么要问这种问题。
  • 对不起,您的问题似乎与几天前提出的问题非常相似(这似乎是重复的)。看[arm+gcov]中的最后一个问题;使用lcov 选项--gcov-tool;真的有那么难找吗?你知道你需要交叉编译器;所以你知道最好使用cross-gcov吗?
  • 谢谢你无艺术的噪音..:-)..但是你能详细说明一下作为答案吗。谢谢你的时间。

标签: unit-testing arm cross-compiling gcov lcov


【解决方案1】:

一旦您能够正确生成 .gcda 和 .gcno 文件,您就需要 lcov 工具来捕获代码覆盖率。在这里您应该交叉编译您的 lcov 工具并将其添加到文件系统中。

我正在从事类似的任务,我正在尝试捕获基于 ARMv7 的系统的覆盖范围。我已将 yocto 用于构建框架。在 yocto 中,meta-oe 层提供了对 lcov 的支持。您可以通过在配置文件中添加以下行来将其添加到 conf/local.conf 文件中。

CORE_IMAGE_EXTRA_INSTALL += "lcov"

完成构建的所有步骤后,您将在 /bin 目录中的目标板上安装 lcov 工具。参考lcov man page

您可以使用以下命令生成覆盖率文件。

lcov --capture --directory <path-to-your-generated-files-dir> --gcov-tool /usr/bin/arm-linux-gnueabi-gcov --output-file <file_name>

上面的命令会生成一个文件,如果你的目标板没有足够的能力,那么你可以将生成的文件复制到你的构建系统中。

在构建系统中, 您可以执行以下命令以生成具有确切覆盖范围详细信息的 HTML 输出,

genhtml <path_to_generated_file> --output-directory <out_dir>

有关 GCOV 和 LCOV 集成的更多详细信息,请参阅以下链接。 1.How to use GCOV & LCOV

  1. GCOV in linux kernel

【讨论】:

    猜你喜欢
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2019-12-11
    相关资源
    最近更新 更多