2012-12-04 4 views
5

Linux test Project에서 몇 가지 테스트 시나리오를 사용하고 Kernel source code coverage을 얻으려고합니다.리눅스 커널 코드 적용 범위 - 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를 통해 지금까지 리눅스 커널 코드의 어느 부분이 사용되었는지 알 수 있습니다. 하지만 LCOV -c를 호출하면 모든 빌드 플래그가 정상이지만이 플래그가 표시됩니다.

    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. 검색어에 대한 절차가 없습니다. 넬 범위. 새로운 kenrel에서 부팅 한 후 "mount -t debugfs none/sys/kernel/debug"명령을 통해 debug-fs를 마운트하고이 파일에서 커널의 적용 범위 로그를 읽어야합니다.

  2. 커널 적용 범위는 다음과 같을 수 없습니다. 모듈로 제작. 보시다시피, CONFIG 옵션은 'M'이 아닌 'Y'입니다.

+0

내가 "mount -t debugfs none/sys/kernel/debug"를 실행하면 그게 이미 마운트되어 있다고 말하며 부팅 후 확인하면 실제로는 특정 속성으로 마운트됩니다. 빈 채로 남아 있습니다. – Shayan

+0

우분투 12.04의 기본 커널에서 디버깅 fs도 부팅 후 이미 마운트되어 있습니다. – Houcheng

3

아래 우분투 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#