我正在尝试使用Linux测试项目的一些测试场景并获取内核源代码覆盖率。
我是用GCOV/LCOV来这么做的。
到目前为止,我拥有的东西如下:
基于GCOV的内核剖析 CONFIG_GCOV_KERNEL=y CONFIG_GCOV_PROFILE_ALL=y Linux内核版本: 2.6.32.60+drm33.26
我应该拥有但我没有的东西
现在,我想要的是运行测试场景,并使用LCOV获取Linux内核代码的哪一部分到目前为止已经使用过。但是当我调用LCOV -c时,这就是我所得到的,尽管所有的构建标志都是可以的。
加载所需的gcov内核模块。 错误:无法加载所需的gcov内核模块!
这里有一个内核补丁,用于< 2.6.30,然后它就内置了。
发布于 2012-12-28 06:57:16
请阅读这份文件
http://www.mjmwired.net/kernel/Documentation/gcov.txt
以下是你的问题的答案:
发布于 2013-01-15 05:10:07
下面是我在ubuntu12.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#https://stackoverflow.com/questions/13712280
复制相似问题