2012-12-04 54 views
5

Linux test Projectからいくつかのテストシナリオを使用して、Kernel source code coverageを取得しようとしています。Linuxカーネルコードカバレッジ - GCOV

私はそうするためにGCOV/LCOVを使用しています。ビルド設定で

  • gcovのフラグ

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/LCOVは入力としてソースファイルを使用すると動作します

私が持っている必要がありますが、私は物事をしませ

  • は/ proc/gcovのフォルダ
  • gcovのカーネルモジュール(gcov.o?)

は、今、私が欲しいものを実行することですテストシナリオとLCOVは、これまでにLinuxカーネルコードのどの部分が使用されているかを取得します。しかし、私が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. keのproc fsはありませんレーネルカバレッジ新しいkenrelから起動したら、 "mount -t debugfs none/sys/kernel/debug"というコマンドでdebug-fsをマウントし、このファイルからカーネルのカバレッジログを読み込まなければならなかった。

  2. カーネルカバレッジはモジュールとして構築されています。ご覧のとおり、CONFIGオプションは 'M'ではなく 'Y'です。

+0

私は "mount -t debugfs none/sys/kernel/debug"を実行すると、それは既にマウントされていると言いますが、起動後にチェックすると、実際には特定の属性でマウントされます空のままです。 – Shayan

+0

のデフォルトカーネルのubuntu 12.04から、debug-fsも起動後にすでにマウントされています。 – Houcheng

3

以下は私のubuntu 12.04デフォルトカーネルの試しです。 gcovが有効になっていないが、デバッグ用のfsがマウントされていて、一部のkvmデバッグ用の情報が見つかりました。

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#