学位论文 > 优秀研究生学位论文题录展示
Linux虚拟调试系统关键技术的研究与实现
作 者: 舒长林
导 师: 雷航
学 校: 电子科技大学
专 业: 计算机应用技术
关键词: Linux 调试系统 内核模块 VTLS KVTM UVTM 调试代码
分类号: TP316.81
类 型: 硕士论文
年 份: 2010年
下 载: 52次
引 用: 0次
阅 读: 论文下载
内容摘要
目前Linux内核开发工作的工程师们始终没有能找到一种高效、快捷的调试方法。这当然与Linux内核的开源性有关。内核开发者可以根据自己需要来修改内核,这种修改打破了内核的统一。要实现一种适合所有修改内核的调试工具显然不合适,同时由于调试的意图也不一样(查看关键变量值或状态、执行某个逻辑过程、给测试人员使用)要实现统一的调试工具就更加困难。目前常用的Linux内核调试方法有printk,kdb,kprobes,kgdb。其中printk是用户通过在代码中增加打印信息来查看程序的执行情况。它调试手段单一,无法动态调试一些关键逻辑过程,和用户的交互性差。kdb无法直接使用到裁减过的Linux内核上。kprobes工具软件使用复杂,且对使用者要求高。同时对该工具使用需要有一定时间、和经验的积累。kgdb软件适合远程调试,需要两台机器才能搭建好环境,占用过多资源。本文根据实际的工程项目需求,结合Linux内核虚拟文件系统和SCSI中层的软件设计原则提出了VTLS(Virtual Test Layer System)。VTLS以一种统一和具体内核版本无关调试方式提供给开发者、测试者、维护者使用。它能够让内核模块开发者自己决定需要的调试点,并在软件运行过程中动态执行调试代码,即时向用户输出调试结果。开发者自己决定用户态下的输入命令,并且支持多内核模块的调试。该系统同时向测试人员提供测试接口,测试人员只需要在用户态下执行相关命令行就可以调用内核相关例程,并即时查看执行结果。软件后期的维护者可以根据开发者提供的调试手册通过执行对应的调试命令快速排查问题,找出问题的根源,这会大大降低产品的后期维护成本。VTLS系统的KVTM(Kernel Virtual Test Module)设计采用独立性的思想,通过降低和被调试模块间的耦合度提高了系统的稳定性,使得VTLS系统能够在大型的工程项目中发挥其高效的优势。被调试模块只需要调用KVTM的注册函数和注销函数就可以完成向VTLS添加调试命令和注销命令的功能。VTLS系统的UVTM(User Virtual Test Module)通过提供TAB键联想命令、上下键翻转历史命令、编辑错误命令等功能为用户提供最快捷的调试方式。同时KVTM和UVTM采用多样化的通信方式可以避免单点故障,在一种方式交互失败情况下,可以通过其他方式(字符驱动、procfs、io共享)查看甚至修复KVTM的错误。
|
全文目录
摘要 4-5 Abstract 5-12 第一章 绪论 12-18 1.1 课题背景和来源 12-13 1.2 Linux 内核调试技术的发展现状 13 1.3 主要研究内容 13-15 1.3.1 模块间耦合性 14 1.3.2 资源独立性 14 1.3.3 软件可扩展性和复用性 14-15 1.3.4 易用性 15 1.3.5 内核态与用户态通信 15 1.4 技术路线 15-16 1.5 论文组织结构 16-18 第二章 相关理论和技术 18-31 2.1 Linux 虚拟文件系统(VFS) 18-20 2.1.1 VFS 综述 18-19 2.1.2 VFS 架构分析 19-20 2.1.3 VFS 设计思想研究总结 20 2.2 Linux 内核SCSI 子系统 20-23 2.2.1 SCSI 子系统介绍 20-21 2.2.2 SCSI 架构 21-23 2.2.3 SCSI 中层设计研究总结 23 2.3 Linux 字符驱动 23-25 2.3.1 字符驱动介绍 23-25 2.3.2 字符驱动研究总结 25 2.4 procfs 文件系统 25-28 2.4.1 /proc 目录介绍 26 2.4.2 Proc 内核接口与使用方式 26-28 2.4.3 Proc 总结 28 2.5 Linux 终端控制 28-30 2.5.1 终端分类 28-29 2.5.2 修改终端系统调用 29-30 2.6 本章小结 30-31 第三章 内核虚拟调试模块(KVTM) 31-51 3.1 设计目的 31-32 3.2 设计思想 32-34 3.2.1 独立式分层设计思想 32 3.2.2 内核接口设计思想 32-34 3.3 命令初始化子模块 34-45 3.3.1 注册过程解析 34-35 3.3.2 命令树 35-38 3.3.3 模块调试更新处理 38-39 3.3.4 模块卸载处理 39-45 3.4 命令解析子模块 45-50 3.4.1 命令解析 45-46 3.4.2 参数处理 46-47 3.4.3 命令分类 47-49 3.4.4 命令输出处理 49-50 3.5 本章小结 50-51 第四章 用户调试模块(UVTM) 51-63 4.1 设计目的 51-52 4.1.1 独立性强 51-52 4.1.2 易用性高 52 4.2 设计思想 52-57 4.2.1 修改终端属性 52-53 4.2.2 异步IO 思想 53-56 4.2.3 分类法处理命令 56-57 4.3 初始化模块 57-59 4.3.1 打开字符驱动 58 4.3.2 初始化命令数组 58-59 4.4 用户易用性设计 59-62 4.4.1 TAB 键命令联想 60-61 4.4.2 上下键使用历史命令 61 4.4.3 命令帮助信息提取设计 61-62 4.5 本章小结 62-63 第五章 通信模块设计 63-76 5.1 设计目的 63-64 5.2 设计思想 64 5.3 procfs 查看KVTM 状态 64-66 5.3.1 procfs 显示内容设计 64-65 5.3.2 读取KVTM 接口 65-66 5.4 虚拟字符驱动子模块 66-68 5.5 大数据块共享 68-70 5.5.1 内存共享支持 68-69 5.5.2 VTLS 内存映射设计原理 69-70 5.6 应用分析 70-75 5.6.1 应用场景介绍 70-72 5.6.2 效果检验 72-75 5.7 本章总结 75-76 第六章 总结与展望 76-78 致谢 78-79 参考文献 79-81 个人简历和在学习期间发表的学术论文 81-82
|
相似论文
- 基于ARM的TFT-LCD面板检测设备软件的研究,TN873.93
- 网位仪信号采集与处理平台的设计与实现,S951.2
- 基于TCP/IP协议的嵌入式图像传输系统接收终端的设计,TP368.1
- 基于嵌入式系统钻孔成像装置的研究,P634.3
- IP网络QoS技术研究,TP393.09
- 基于嵌入式Web技术的动态应变仪研究与实现,TP368.1
- 嵌入式多参数环境智能监测系统的设计与实现,TP274
- 数字型智能终端系统门口机的设计,TP368.1
- 基于嵌入式系统的水厂加氯智能控制系统,TU991.2
- 基于ARM的智能车载终端的设计,TP368.1
- 多功能火灾报警楼层显示器的设计与实现,TN873
- 基于Qt/E的嵌入式膜片钳系统设计,TP368.1
- 面向家庭的远程健康监护系统的设计与研究,TP311.52
- 一种改进型双光束分光光度计的设计,TH744.12
- 基于ARM和Linux的嵌入式汽车虚拟仪表系统的研究,U463.7
- 基于ARM9的焊接热循环手持设备的设计,TN305
- 基于PCI总线的双片SoC协作机制设计与实现,TN47
- 基于智能家居系统的音视频通信方案的研究与实现,TN919.8
- 一种基于嵌入式Linux的人体平衡监测系统的设计,TP274
- 蜜罐文件系统的智能内核级中间件研究,TP393.08
- 基于DM6467的视频服务器设计与实现,TP393.05
中图分类: > 工业技术 > 自动化技术、计算机技术 > 计算技术、计算机技术 > 计算机软件 > 操作系统 > 网络操作系统 > UNIX操作系统
© 2012 www.xueweilunwen.com
|