2012-12-04 65 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#