2012-12-04 104 views
5

我试图使用从Linux test Project一些测试场景,并获得Kernel source code coverageLinux内核代码覆盖 - gcov的

我使用的gcov/LCOV这样做。

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

  • 在构建配置

GCOV-based kernel profiling

CONFIG_GCOV_KERNEL=y

CONFIG_GCOV_PROFILE_ALL=y

On Linux kernel version: 2.6.32.60+drm33.26

  • gcov的标志构建内核我所有的.gcov文件源后文件夹
  • 的gcov/LCOV工作时,我使用的是源文件作为输入

,我应该有,但我做的事情不

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

现在我想的是运行测试场景和使用LCOV获取Linux Kernel Code的哪一部分到目前为止已被使用。但是当我打电话LCOV -c这是我所得到的,即使所有的构建标志都OK。

Loading required gcov kernel module.

lcov: ERROR: cannot load required gcov kernel module!

没有为< 2.6.30内核补丁,之后它是建立在

回答

2

请仔细阅读本文件

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

这是回答你的问题:

  1. 没有为柯没有proc文件内部覆盖。从新的kenrel启动后,必须通过以下命令挂载debug-fs:“mount -t debugfs none/sys/kernel/debug”并从该文件读取内核的覆盖日志

  2. 内核覆盖不能构建为模块。正如你所看到的,CONFIG选项是'Y',而不是'M'

+0

的事情是,当我运行“安装-t debugfs无/ SYS /内核/调试”它说,它已经安装,当我开机后,检查它真实地安装与特定的归属,虽然它保持空着。 – Shayan

+0

来自ubuntu 12.04的默认内核,debug-fs在启动后也已经挂载。 – Houcheng

3

下面是我尝试使用的Ubuntu 12.04默认内核。 认为gcov的未启用,但调试FS安装和一些KVM调试inforation可以在其中找到。

ubuntu:/sys/kernel# mount -t debugfs none /sys/kernel/debug 
mount: none already mounted or /sys/kernel/debug busy 
mount: according to mtab, none is already mounted on /sys/kernel/debug 
ubuntu:/sys/kernel# umount /sys/kernel/debug 
ubuntu:/sys/kernel# mount -t debugfs none /sys/kernel/debug 
ubuntu:/sys/kernel# ls debug 
acpi bdi bluetooth extfrag gpio hid kprobes kvm mce regmap regulator sched_features suspend_stats tracing usb wakeup_sources x86 
ubuntu:/sys/kernel# cat debug/kvm/ 
efer_reload   host_state_reload io_exits    mmio_exits   mmu_pte_write  nmi_window   signal_exits 
exits    hypercalls   irq_exits   mmu_cache_miss  mmu_recycled   pf_fixed    tlb_flush 
fpu_reload   insn_emulation  irq_injections  mmu_flooded   mmu_shadow_zapped pf_guest 
halt_exits   insn_emulation_fail irq_window   mmu_pde_zapped  mmu_unsync   remote_tlb_flush 
halt_wakeup   invlpg    largepages   mmu_pte_updated  nmi_injections  request_irq 
ubuntu:/sys/kernel# cat debug/kvm/io_exits 
467789515 
ubuntu:/sys/kernel#