论文部分内容阅读
随着信息技术的发展,计算机技术得到了更广、更深层次的应用。Linux系统由于开源免费等特性,越来越多的被用来做开发平台或学术研究。现代Linux系统越来越复杂,在Linux内核开发过程中,内核调试是很重要的一个环节。调试的目的是解决内核开发过程中出现的错误。由于系统内核的特殊性,针对系统内核的调试器比较少,而且无法方便地对系统内核进行源码调试。在调查和分析比较了现有内核调试工具的优势和不足,本文利用Xen虚拟化平台的特性,设计实现了一个Linux下的内核源码调试器。本文在分析了当前各种调试方法和实现技术的基础上,设计了一种基于Xen的Linux系统内核的源码调试新方法XenDebugger。XenDeugger使用Xen虚拟机代替了当前调试器中的目标物理机,串口通信则变成了Xen虚拟机和物理机间的通信。依赖虚拟化技术,只用一台物理机实现对Linux内核的调试。该调试器依据对Linux下的调试信息格式和Xen物理机和虚拟机间的通信而重新设计的一个调试工具,并借鉴了当前调试器的实现方法,完成调试器的设计和代码实现。本文主要工作和创新包含以下几个方面:1.内核透明调试。目前常用的内核调试工具kdb和kgdb都需在内核中安装补丁包,在内核启动时一起运行。本文设计的调试器是运行在虚拟机之外的,没有改动内核,只借助虚拟机和物理机的通信接口监控和调试内核系统。控制内核运行是通过Xen控制虚拟机实现的,没有侵入改写被调试系统内核。2.内核信息解析。内核系统比较复杂,编译出的调试信息项比较多。本文使用二分查找和广度优先搜索算法结合使用,快速解析调试信息。对行号信息和编译单元等有序数组项使用二分查找算法,而对树型数据结构组织的调试信息进行广度优先搜索,提高效率。经过实验测试,使用XenDebugger调试内核时,调试器没有出现大的时间延迟,解析调试信息的时间在20微秒以内,内核系统部分模块的性能下降10%到15%。XenDebugger的功能和实现方法已经得到Xen社区的认可,并被Xen社区接受为Xen社区开源项目产品之一。