linux 内核三种调试方法比较(gdb、kdb、kgdb)

1. kdb:只能在2.6版旧内核使用,需要打上补丁;优点是不需要两台机器进行调试,直接在本机进行操作。
Kdb(Kernel Debug)是SGI公司开发的遵循GPL的内建Linux内核调试工具。标准的Linux内核不包括kdb,需要从 ftp://oss.sgi.com/www/projects/kdb/download/ix86 下载对应标准版本内核的kdb补丁,对标准内核打补丁,然后,编译打过补丁的内核代码。目前kdb支持包括x86(IA32)、IA64和MIPS在内的体系结构。

2. gdb:gdb主要用于调试用户级程序,在调试内核模块时缺少一些至关重要的功能,如设置断点、修改数据。它可用来查看内核的运行情况,如 print命令,包括反汇编内核函数。
通过串口线或网络将两台计算机以主机/目标机(host machine/target machine)方式连接时,结合kgdb,gdb则可用于调试linux内核。

3. kgdb:能很方便的在源码级对整个内核或模块进行调试,缺点是kgdb只能进行远程调试,它需要一根串口线及两台机器来调试内核(也可以是在同一台主机上用vmware软件运行两个操作系统来调试)。
kgdb是Linux内核的源代码级调试器,与gdb配合使用可以调试Linux内核。在Linux内核的kgdb配合下,内核开发者可以用类似于调试应用程序的方式通过gdb调试内核,可以方便以使用gdb的命令在内核代码放置断点、单步调试内核和观察内核变量值等。

你可能感兴趣的:(Linux)