分析Linux内核模块

Alb*_*ore 13 linux profiling kernel-module linux-kernel

我有兴趣分析Linux内核的模块.我这样试过:

  1. 用内置内核 CONFIG_PROFILING=y
  2. 用.启动内核 profile=2
  3. 重置分析器 echo 123 > /proc/profile
  4. 该模块由专用守护程序成功加载
  5. 运行通过特定ioctl调用使用模块的用户空间应用程序.测试应用程序按预期工作,因此模块工作正常.
  6. 使用System.app与内核一起生成的readprofile -p /proc/profile -m System.map位置读取分析信息.

到现在为止还挺好.几乎一切都按预期工作.什么也没有但是工作是,我没有得到我的模块任何信息,即没有从模块的任何功能的提及.

然而,在第二个想法,我记得我忘了重新编译模块使用CONFIG_PROFILING=y.

所以,我的问题是:模块是否没有出现在分析日志中,因为它没有编译过,CONFIG_PROFILING=y或者是否还有一些我不知道的更明显的原因?

如果有人想知道,为什么我要求而不是直接尝试,那是因为,我不能在家里做,而且我更愿意在再次访问代码之前听到知识渊博的话.

Alb*_*ore 6

由于动态加载模块,因此无法以这种方式分析模块,这意味着它们在System.map文件缺失.

解决方案是将驱动程序构建到内核中.遗憾的是,这并不总是有效,因为系统可能只能在内置于模块中的驱动程序中运行.