Linux内核代码覆盖率 - GCOV

Sha*_*yan 5 linux kernel code-coverage gcov lcov

我正在尝试使用Linux测试项目中的一些测试场景并获得内核源代码覆盖率.

我正在使用GCOV/LCOV这样做.

这是我到目前为止的事情:

  • 构建配置中的GCOV标志

基于GCOV的内核分析

CONFIG_GCOV_KERNEL = Y

CONFIG_GCOV_PROFILE_ALL = Y

在Linux内核版本:2.6.32.60 + drm33.26

  • 构建内核后,我在源文件夹中包含了所有.gcov文件
  • 当我使用源文件作为输入时,GCOV/LCOV可以工作

我应该拥有的东西,但我没有

  • / proc/GCOV文件夹
  • GCOV内核模块(gcov.o?)

现在我想要的是运行测试场景并使用LCOV获取到目前为止使用的Linux内核代码的哪一部分.但是当我调用LCOV -c时,即使所有构建标志都没问题,这也是我得到的.

加载所需的gcov内核模块.

lcov:错误:无法加载所需的gcov内核模块!

有一个<2.6.30的内核补丁,之后内置它.

Hou*_*eng 3

请阅读本文档

http://www.mjmwired.net/kernel/Documentation/gcov.txt

以下是对您问题的回答:

  1. 没有用于内核覆盖的 proc fs。从新的内核启动后,您必须通过命令挂载 debug-fs:“mount -t debugfs none /sys/kernel/debug”并从此文件中读取内核的覆盖日志

  2. 内核覆盖率不能构建为模块。如您所见,CONFIG 选项是“Y”,而不是“M”