Linux内核的内存调试器

时间:2013-11-19 06:09:32

标签: linux-kernel linux-device-driver embedded-linux

Linux内核有没有内存调试器? 在基于android / linux arm的硬件上的其他崩溃中,我们遇到了“NULL指针取消引用”内核oops的问题。

由于

1 个答案:

答案 0 :(得分:3)

现代内核包含大量内置诊断工具(内核源代码配置工具的“内核黑客”子菜单中提供了这些工具)。但是,在嵌入式目标上,还可以选择使用带有良好jtag调试器的gdb,例如Abatron BDI系列(当然,这将允许最精确的诊断,包括中断相关问题的诊断)。

在没有硬件调试器的情况下,以下选项可以非常方便地检测内存泄漏(不要忘记使用“使用调试信息编译内核”和“使用框架指针编译内核”来编译内核) :

  1. 内核内存泄漏检测器 - 用于捕获kmalloc / kfree错误。
  2. KGDB (带子选项) - 这将在内核中启用内置gdb服务器,可以通过串口从gdb前端访问。还有一个KGDB_KDB选项可以手动执行(通过省略gdb前端和使用人工可管理协议)。
  3. kmemcheck - 需要最少的人工干预和最多的机器资源,但在进行与内存相关的初始问题分析时非常方便。
  4. 还有许多其他诊断选项,可用于更具体的问题类别。其中大部分都有合理的文档记录,包括内核配置工具片段以及源文档/子目录中的单独文档(+各种在线出版物)。