我有ubuntu操作系统,我在其中安装了gcov。 我能够将gcov用于我的c-program,这是在用户空间,我得到了理想的结果。 当我想为我的.ko文件(内核空间)使用gcov时,我收到一个错误。 我用Google搜索并从下面提到的链接中发现我将通过启用CONFIG_DEBUG_FS,CONFIG_GCOV_KERNEL,CONFIG_GCOV_FORMAT_AUTODETECT和CONFIG_GCOV_PROFILE_ALL来重新编译我的整个内核。
http://techvolve.blogspot.in/2014/03/how-to-gcovlcov-for-linux-kernel-modules.html
我有没有其他方法可以在不重新编译内核的情况下为我的内核可加载模块集成gcov? 如果我需要更多信息,请告诉我。我会更新它。 谢谢
答案 0 :(得分:0)
如果没有Linux内核核心的支持,您无法从内核模块收集内容。所以,如果你当前的内核没有这样的支持,你必须重新编译它。
来自内核模块的覆盖需要CONFIG_GCOV_PROFILE_ALL ,但是需要其他配置选项:
CONFIG_GCOV_KERNEL - 启用内核空间中的覆盖计数器,
CONFIG_DEBUG_FS - 启用debugfs文件系统,这是将这些计数器提取到用户空间的唯一方法,
CONFIG_GCOV_FORMAT_AUTODETECT - 描述收集的覆盖范围的格式(您可以选择配置选项,选择特定格式而不是自动检测)。