CONFIG_PROFILING=y
构build内核 profile=2
引导内核 echo 123 > /proc/profile
重置分析器 ioctl
调用运行使用该模块的用户空间应用程序。 testing应用程序按预期工作,所以模块工作正常。 readprofile -p /proc/profile -m System.map
读取分析信息,其中System.app与内核一起生成。 到现在为止还挺好。 几乎所有事情都按预期工作。 但是没有工作的是,我没有得到任何有关我的模块的信息,即没有提到模块的任何function。
然而,第二个想法,我记得我忘了重新编译模块使用CONFIG_PROFILING=y
所以,我的问题是: 该模块没有出现在分析日志中,因为它没有用CONFIG_PROFILING=y
进行编译,还是有一些其他更明显的原因,我不知道?
如果有人想知道,我为什么要问,而不是直接尝试,那是因为我不能在家里做,而且我希望听到知情者在再次访问代码之前会说些什么。
以这种方式对模块进行配置似乎不可能,因为它们是动态加载的,这意味着它们在System.map文件中是缺少的 。
一个解决方案是将驱动程序构建到内核中 。 不幸的是,这并不总是工作,因为系统可能被设计为只能在驱动程序内置到模块中运行。
我建议使用oprofile应该工作。