如何在交叉编译环境中使用lcov。

时间:2014-11-29 07:26:00

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

CORE_IMAGE_EXTRA_INSTALL + =“ lcov”

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

您可以使用以下命令来生成coverage文件。

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