2013-04-17 57 views
2

我是linux内核的新手。 徘徊如何浏览完整的流程,从CPU的通电。 BIOS/ROM代码的基本思路。用于调试linux内核的工具是什么?

我可以有一些工具来调试完整的内核吗? 或 原始代码浏览是否可取?

+0

阅读也http://www.tldp.org/HOWTO/BootPrompt-HOWTO.html和http://www.linuxhomenetworking.com/wiki/index .php/Quick_HOWTO _:_ Ch07 _:_ The_Linux_Boot_Process –

+0

是否符合最新的内核? – San

+0

可能是的。为什么不呢? –

回答

2

如果你的意图是理解Linux内核的整个流程,在QEMU上运行Linux内核可以很容易地了解Linux的工作方式。 ESP。您可以模拟很多没有真正硬件的CPU类型。或者user mode Linux怎么样?

This document可以有助于在QEMU上调试内核。

0

刚加入,Linux内核不太适合调试。 Linus Torvalds曾经表示,他支持在Linux中进行内核调试,因为它会导致代码写得不好。 我用kdbg,但是我没有觉得它非常有用,我建议使用printk来调试内核oldschool的方式。

2

以下工具可以帮助你调试Linux内核

Dynamic Probes是Linux的流行的调试工具,它由IBM开发的一个。该工具允许在用户和内核空间的几乎任何位置放置“探测器”。探测包含一些代码(用专门的,面向堆栈的语言编写),当控制点到达给定点时执行。资源有关dprobes/Kprobes的下面列出

Linux Trace Toolkit是一个内核补丁和一组允许在内核中跟踪事件的相关实用程序。跟踪包括时间信息,并且可以创建关于给定时间段内发生的事情的合理完整图像。 LTT的,LTT Viewer和LTT接着资源代

MEMWATCH是一个开源存储器错误检测的工具。它通过在gcc语句中定义MEMWATCH并向我们的代码添加一个头文件来工作。通过这个我们可以跟踪内存泄漏和内存损坏。对于MEMWATCH

ftrace资源是Linux内核的一个很好的跟踪框架。 ftrace跟踪内核的内部操作。这个工具包含在2.6.27的Linux内核中。通过各种跟踪器插件,ftrace可以针对不同的静态跟踪点,如调度事件,中断,内存映射I/O,CPU电源状态转换以及与文件系统和虚拟化相关的操作。此外,内核函数调用的动态跟踪是可用的,可选地通过使用globs来限制函数的子集,并且可以生成调用图并提供堆栈使用。您可以在https://events.linuxfoundation.org/slides/2010/linuxcon_japan/linuxcon_jp2010_rostedt.pdf

ltrace找到ftrace的一个很好的教程是在Linux中的调试工具,用于显示用户空间应用程序对共享库的调用。该工具可用于跟踪任何动态库函数调用。它拦截并记录被执行的进程调用的动态库调用以及该进程接收到的信号。它还可以拦截和打印程序执行的系统调用。

KDB是Linux内核的内核中的调试器。 KDB遵循简单的壳式界面。我们可以使用它来检查内存,注册,处理列表,dmesg,甚至设置断点以停止某个位置。通过KDB,我们可以设置断点并执行一些基本的内核运行控制(虽然KDB不是源级调试器)。关于KDB

KGDB几个方便的资源,旨在作为Linux内核源代码级调试。它与gdb一起用于调试Linux内核。使用kgdb需要两台机器。其中一台机器是开发机器,另一台是目标机器。要调试的内核在目标机器上运行。期望的是,gdb可以用来“入侵”内核来检查内存,变量并查看调用堆栈信息,类似于应用程序开发人员使用gdb调试应用程序的方式。可以在内核代码中放置断点并执行一些有限的执行步骤。关于KGDB几个方便的资源