单步执行Linux内核源代码?

use*_*112 4 unix linux ubuntu kernel

我的目标是了解Linux的工作原理.我知道那里有更小的内核 - 我有Minix的书,但问题是虽然教授概念是好的 - 我真的想学习linux内核的细节.

我有一份linux内核源代码.是否有任何技术,以便我可以"启动"此源代码并以某种方式逐步执行代码,以便我可以看到发生了什么?

如果没有,那么准确了解正在发生的事情的最佳技术是什么(包括推荐的书籍,博客,技术文档等)?

编辑

源代码是否具有针对特定操作系统区域的良好文档?

Mar*_*rkR 7

您可以在"用户模式Linux"体系结构中构建内核,并将其作为另一个(Linux)操作系统中的常规进程运行.(提示:RTFM,"make ARCH = um")

然后你可以在调试器下运行它,在任何地方或任何地方设置断点,它就像一个普通的用户空间任务.


Jes*_*mos 5

http://www.amazon.com/Professional-Linux-Kernel-Architecture-Programmer/dp/0470343435/ref=sr_1_1?ie=UTF8&qid=1358373427&sr=8-1&keywords=professional+linux+kernel+architecture

我推荐这本书超过任何其他.这将解释一切如何运作并且仍然非常准确.

这些概念确实非常重要,本书将指出内核中的关键功能,以便您自己获取详细信息.简单的事情是一些系统调用,或者只是打开一些核心文件并读取函数并尝试弄清楚它们做了什么或者只是手动跟踪内容.

如果你想单步执行内核,可以使用像QEMU这样的虚拟化软件,并在调试模式下加载内核(QEMU具有远程GDB支持),你可以将内核的符号表kernel.syms(IIRC)加载到GDB中,你可以确切地看到正在执行的内容 对于内部运行的内核来说,这可能非常慢,并且实际上只对调试开发内核有用,但如果您愿意接受减速,那么就去做吧.

如上所述,最好的是阅读来源,至少我学到了这些.找到您想要查看的任何功能的关键功能,并且不难单步执行代码并查看会发生什么(使用TAGS或CSCOPE之类的东西来简化这一过程).