Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can i use gcov for kernel modules without recompiling the whole kernel?

I have ubuntu OS and i installed gcov in it. I am able to use gcov for my c-program which is in user space and i am getting the desired results. When i want to use gcov for my .ko files(kernel space) i am getting an error. I googled and from the below mentioned link i found that i will have to recompile my whole kernel by enabling CONFIG_DEBUG_FS, CONFIG_GCOV_KERNEL, CONFIG_GCOV_FORMAT_AUTODETECT and CONFIG_GCOV_PROFILE_ALL.

http://techvolve.blogspot.in/2014/03/how-to-gcovlcov-for-linux-kernel-modules.html

Do i have any other way to integrate gcov for my kernel loadable modules without recompiling kernel? If more information is required from my end please let me know. I will update it. Thank You

like image 305
Vijay Anand Chandrasekaran Avatar asked Sep 02 '25 02:09

Vijay Anand Chandrasekaran


1 Answers

Without support from the Linux kernel core you cannot collect coverage from a kernel module. So, if you current kernel has no such support, you have to recompile it.


CONFIG_GCOV_PROFILE_ALL isn't needed for coverage from the kernel module, however other configuration options are needed:

  • CONFIG_GCOV_KERNEL - enables coverage counters in the kernel space,

  • CONFIG_DEBUG_FS - enables debugfs filesystem, the only way for extract those counters into the user space,

  • CONFIG_GCOV_FORMAT_AUTODETECT - describes the format of the collected coverage (you may chose configuration option which selects specific format instead of autodetecting).

like image 85
Tsyvarev Avatar answered Sep 06 '25 23:09

Tsyvarev