我想研究一些Linux设备驱动程序的流程和一些最小的内核流程(线程以及上下文切换和中断管理)。
如何调试linux内核?这样做的基本步骤是什么?
最近,我成功编译了新内核(2.6.34.7)并将其集成到运行 2.6.29 内核的机器中。
答案1
这取决于您真正需要什么。也许简单的printk()
功能对于开始来说就可以了。还有一个/proc
可用于从内核获取有用信息的接口。
如果您需要更复杂的东西,请使用 KGDB(内核调试器)。
答案2
转到内核源文件夹并查看Documentation/
文件夹内部。首先浏览文件kernel-parameters.txt
寻找调试参考。
如果您的内核是使用CONFIG_DEBUG_KERNEL
选项集编译的,则可以通过loglevel
引导选项轻松调整内核消息的详细程度。
答案3
除 KGDB 之外的其他选项是使用 QEMU 和 GDB 调试内核。与 KGDB 不同,QEMU-GDB 组合只需要一台机器。