0

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

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

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

4

1 回答 1

1

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

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

CORE_IMAGE_EXTRA_INSTALL += "lcov"

完成构建的所有步骤后,您将在/bin目录中的目标板上安装 lcov 工具。请参阅lcov 手册页

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

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.如何使用 GCOV & LCOV

  1. Linux内核中的GCOV
于 2019-02-01T09:10:30.953 回答