如何调试Linux内核的特定代码?

时间:2013-11-28 04:00:32

标签: c debugging linux-kernel

虽然有时您想知道内核的特定代码是如何工作的,但最好的方法是通过包含特定的头文件来编写测试代码,例如,我想知道内核的 kfifo 是如何工作的,我需要的第一个包括<linux/kfifo.h>

但这对我来说不起作用,仅包括<linux/kfifo.h>,我们必须告诉GCC头文件搜索路径,一些预定义的宏像__KERNEL__等等,是否有任何示例项目执行此操作之前?或者你可以告诉我如何调试这些代码而不复制这些代码并删除一些无用的功能。

1 个答案:

答案 0 :(得分:1)

调试内核基础结构代码(基本上,不包括设备驱动程序的所有内容)最直接的方法是为uml体系结构编译内核(make config ARCH=um以及之后的常用内容;确保将调试符号保留在建立)。然后你可以使用你最喜欢的用户空间调试器来运行和分析获得的uml内核(因为它是一个普通的linux可执行文件)。

http://lxr.linux.no/#linux+v3.12.1/Documentation/virtual/uml/UserModeLinux-HOWTO.txt

顺便说一下,链接的howto已经过时了 - 你不需要下载和修补任何东西; UML多年来一直是内核的一部分。但它会让你开始,特别是如果你稍微谷歌了解其他细节。