一尘不染

如何使Linux内核函数可用于ftrace function_graph tracer?

linux

我想在内核引导过程中使用ftrace跟踪函数function_graph以了解它的作用,但是在中找不到available_filter_functions

我尝试使用导出它EXPORT_SYMBOL(),猜测它会使其可用,但事实并非如此。

你有解决方案吗 ?

有关信息,功能,我想跟踪是persistent_ram_init_ringbufferpersistent_ram_early_init在内核的Android
3.4。

我通读了文档,但对此一无所获,grep并没有提供更多帮助。

谢谢


阅读 630

收藏
2020-06-07

共1个答案

一尘不染

问题在于,这些函数用__init和__devinit注释,这些函数在ftrace函数跟踪器中列出为黑色。

为什么?因为作为模块初始化函数(或内核初始化函数),它们在初始化期间被加载,并在初始化完成时被删除。ftrace跟踪的每个函数都保存在一个特殊的紧凑表中。当前,没有办法告诉ftrace这些函数已被删除(释放),并且ftrace应该将其从表中删除。如果我们只是忽略这一点,那么在启用函数跟踪时,ftrace将尝试修改不再存在的位置,并且可能导致各种问题(还记得e1000e错误吗?)。

如果您确实要跟踪它们,请删除那些注释。然后它们应该出现在要跟踪的功能列表中。

2020-06-07