当前位置: 首页 > 面试题库 >

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

百里海超
2023-03-14
问题内容

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

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

你有解决方案吗 ?

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

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

谢谢


问题答案:

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

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

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



 类似资料:
  • 问题内容: Linux内核开发人员如何在提交代码后在本地测试他们的代码?他们是否使用某种单元测试,构建自动化?测试计划? 问题答案: linux内核非常重视社区测试。 通常,任何开发人员都会在提交之前测试他们自己的代码,并且经常会使用Linus的内核开发版本,或者与他们的工作相关的项目使用其他不稳定/开发树之一。这意味着他们经常同时测试自己的变更和其他人的变更。 正式的测试计划的方式往往不多,但是

  • 问题内容: 我正在从事学术项目,该项目修改了一些代码并包含了新代码。 我正在使用QEMU加载修改后的内核并进行测试。 但是,我发现某些操作系统需要完整的操作系统才能进行调试。 没有它可能吗? 或者,这是可以与Kernel 2.6一起用于系统的发行版。除了运行程序的功能(包括网络支持)以外,发行版不需要具有任何功能。 问题答案: 我认为最简单的方法是使用buildroot http://buildr

  • 问题内容: 我是内核开发的新手,我想知道如何使用QEMU和gdb运行/调试Linux内核。我实际上正在阅读罗伯特·洛夫(Robert Love)的书,但不幸的是,它没有帮助读者了解如何安装适当的工具来运行或调试内核。因此,我要做的是遵循本教程http://opensourceforu.efytimes.com / 2011/02 / kernel-development-debugging-usi

  • 我正在使用内核3.16并尝试使用LZ4压缩内存中的数据。我检查了内核源代码树,找到了压缩源文件/lib/lz4。c和我使用了以下函数: 但我得到了以下错误: 我的源代码: 我试图找到一些关于LZ4如何在内核模块中工作的示例,但什么也没有找到。我不知道是否有人有在内核模块中进行压缩的经验。 谢啦!

  • MANAGING THE LINUX KERNEL AND LOADABLE KERNEL MODULES 所有操作系统至少由两个主要组件组成。其中第一个也是最重要的是内核。 内核位于操作系统的中心,控制着操作系统所做的一切,包括管理内存,控制 CPU,甚至控制用户在屏幕上看到的内容。操作系统的第二个元素通常被称为用户区域,几乎包括其他所有元素。 内核被设计成一个受保护或特权的区域,只能由 roo

  • 问题内容: 我正在阅读Robert Love的“ Linux内核开发”,并且遇到了以下段落: 无需(轻松)使用浮点数 当用户空间进程使用浮点指令时,内核将管理从整数到浮点模式的转换。内核使用浮点指令时必须执行的操作因体系结构而异,但是内核通常会捕获陷阱,然后启动从整数模式到浮点模式的转换。 与用户空间不同,内核不具有对浮点​​的无缝支持的奢侈,因为它无法轻易地陷入陷阱。在内核内部使用浮点数需要手动