12

我想在内核启动过程中使用 ftrace 跟踪一个函数function_graph以了解它的作用,但它在available_filter_functions.

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

你有解决方案吗 ?

有关信息,我要跟踪的功能persistent_ram_init_ringbufferpersistent_ram_early_initAndroid 内核 3.4 中。

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

谢谢

4

2 回答 2

8

问题是这些函数被 __init 和 __devinit 注释,它们被 ftrace 函数跟踪器列入黑名单。

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

如果您真的想跟踪它们,请删除这些注释。然后它们应该出现在要跟踪的函数列表中。

于 2013-05-08T03:11:01.697 回答
1

http://lwn.net/Articles/370423/

http://www.mjmwired.net/kernel/Documentation/trace/ftrace.txt

这些链接可能会有所帮助。首先是我通过谷歌搜索发现的东西。其次是 ftrace 文档

于 2013-03-17T06:57:29.527 回答