单步执行Linux内核源代码?

时间:2013-01-16 21:55:42

标签: linux unix ubuntu kernel

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

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

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

修改

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

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分: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的东西来简化这一过程。)