[英]Profiling Linux Kernel Modules
我有兴趣分析Linux内核的模块。 我这样试过:
CONFIG_PROFILING=y
构建内核 profile=2
引导内核 echo 123 > /proc/profile
重置探查器 ioctl
调用使用该模块的用户空间应用程序。 测试应用程序按预期工作,因此模块工作正常。 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.