Linux+系统内核的调试.pdf

Linux+系统内核的调试.pdf

ID:52243671

大小:345.61 KB

页数:15页

时间:2020-03-25

Linux+系统内核的调试.pdf_第1页
Linux+系统内核的调试.pdf_第2页
Linux+系统内核的调试.pdf_第3页
Linux+系统内核的调试.pdf_第4页
Linux+系统内核的调试.pdf_第5页
资源描述:

《Linux+系统内核的调试.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux系统内核的调试本文将首先介绍Linux内核上的一些内核代码监视和错误跟踪技术,这些调试和跟踪方法因所要求的使用环境和使用方法而各有不同,然后重点介绍三种Linux内核的源代码级的调试方法。调试是软件开发过程中一个必不可少的环节,在Linux内核开发的过程中也不可避免地会面对如何调试内核的问题。但是,Linux系统的开发者出于保证内核代码正确性的考虑,不愿意在Linux内核源代码树中加入一个调试器。他们认为内核中的调试器会误导开发者,从而引入不良的修正[1]。所以对Linux内核进行调试一直是个令内核程序员感到棘手的问题,调试工作的艰苦性是内核级的开发区别于用户级开发的一个显著特点

2、。尽管缺乏一种内置的调试内核的有效方法,但是Linux系统在内核发展的过程中也逐渐形成了一些监视内核代码和错误跟踪的技术。同时,许多的补丁程序应运而生,它们为标准内核附加了内核调试的支持。尽管这些补丁有些并不被Linux官方组织认可,但他们确实功能完善,十分强大。调试内核问题时,利用这些工具与方法跟踪内核执行情况,并查看其内存和数据结构将是非常有用的。本文将首先介绍Linux内核上的一些内核代码监视和错误跟踪技术,这些调试和跟踪方法因所要求的使用环境和使用方法而各有不同,然后重点介绍三种Linux内核的源代码级的调试方法。1.Linux系统内核级软件的调试技术printk()是调试内核代码

3、时最常用的一种技术。在内核代码中的特定位置加入printk()调试调用,可以直接把所关心的信息打打印到屏幕上,从而可以观察程序的执行路径和所关心的变量、指针等信息。Linux内核调试器(Linuxkerneldebugger,kdb)是Linux内核的补丁,它提供了一种在系统能运行时对内核内存和数据结构进行检查的办法。Oops、KDB在文章掌握Linux调试技术有详细介绍,大家可以参考。Kprobes提供了一个强行进入任何内核例程,并从中断处理器无干扰地收集信息的接口。使用Kprobes可以轻松地收集处理器寄存器和全局数据结构等调试信息,而无需对Linux内核频繁编译和启动,具体使用方法,

4、请参考使用Kprobes调试内核。以上介绍了进行Linux内核调试和跟踪时的常用技术和方法。当然,内核调试与跟踪的方法还不止以上提到的这些。这些调试技术的一个共同的特点在于,他们都不能提供源代码级的有效的内核调试手段,有些只能称之为错误跟踪技术,因此这些方法都只能提供有限的调试能力。下面将介绍三种实用的源代码级的内核调试方法。2.使用KGDB构建Linux内核调试环境kgdb提供了一种使用gdb调试Linux内核的机制。使用KGDB可以象调试普通的应用程序那样,在内核中进行设置断点、检查变量值、单步跟踪程序运行等操作。使用KGDB调试时需要两台机器,一台作为开发机(DevelopmentM

5、achine),另一台作为目标机(TargetMachine),两台机器之间通过串口或者以太网口相连。串口连接线是一根RS-232接口的电缆,在其内部两端的第2脚(TXD)与第3脚(RXD)交叉相连,第7脚(接地脚)直接相连。调试过程中,被调试的内核运行在目标机上,gdb调试器运行在开发机上。目前,kgdb发布支持i386、x86_64、32-bitPPC、SPARC等几种体系结构的调试器。有关kgdb补丁的下载地址见参考资料[4]。2.1kgdb的调试原理安装kgdb调试环境需要为Linux内核应用kgdb补丁,补丁实现的gdb远程调试所需要的功能包括命令处理、陷阱处理及串口通讯3个主要

6、的部分。kgdb补丁的主要作用是在Linux内核中添加了一个调试Stub。调试Stub是Linux内核中的一小段代码,提供了运行gdb的开发机和所调试内核之间的一个媒介。gdb和调试stub之间通过gdb串行协议进行通讯。gdb串行协议是一种基于消息的ASCII码协议,包含了各种调试命令。当设置断点时,kgdb负责在设置断点的指令前增加一条trap指令,当执行到断点时控制权就转移到调试stub中去。此时,调试stub的任务就是使用远程串行通信协议将当前环境传送给gdb,然后从gdb处接受命令。gdb命令告诉stub下一步该做什么,当stub收到继续执行的命令时,将恢复程序的运行环境,把对C

7、PU的控制权重新交还给内核。2.2Kgdb的安装与设置下面我们将以Linux2.6.7内核为例详细介绍kgdb调试环境的建立过程。2.2.1软硬件准备以下软硬件配置取自笔者进行试验的系统配置情况:kgdb补丁的版本遵循如下命名模式:Linux-A-kgdb-B,其中A表示Linux的内核版本号,B为kgdb的版本号。以试验使用的kgdb补丁为例,linux内核的版本为linux-2.6.7,补丁版本为kgdb-2.2。物

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。