繁体   English   中英

分析Linux内核模块

[英]Profiling Linux Kernel Modules

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

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

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

但是,在第二个想法,我记得我忘了使用CONFIG_PROFILING=y 重新编译模块。

所以,我的问题是: 模块没有显示在分析日志中,因为它没有使用CONFIG_PROFILING=y进行编译,还是有其他一些我不知道的更明显的原因?

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

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

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

我建议使用oprofile应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM