本发明专利技术提供了一种MIPS架构操作系统内核的调试方法和装置。其中调试方法包括:在操作系统内核的指定地址插入探测点,将探测点处理函数与探测点关联;在内核执行至探测点时,执行探测点处理函数;由内核预置的调试工具钩住MIPS架构处理器并收集内核调试信息;在探测点处理函数执行完毕后,返回执行操作系统内核。利用该实施例的技术方案,通过置入探测点以及在探测点执行探测点处理函数,钩取MIPS架构处理器以收集调试信息,符合MIPS架构处理器的Linux内核调试要求,使用简单,调试效率高。
【技术实现步骤摘要】
MIPS架构操作系统内核的调试方法和装置
本专利技术涉及操作系统领域,特别涉及一种MIPS架构操作系统内核的调试方法和 >J-U ρ?α装直。
技术介绍
内核开发困难的一个因素就是内核调试艰难,因此内核调试是操作系统内核开发的一个技术瓶颈。现有的Linux系统内核调试手段包括⑶B,KGDP,KDUMP等,这些内核调手段中大多需要给Linux系统内核植入特定的补丁(Patch)才能进行调试,而且这种调试方式相当于在操作系统调试自身,因此只能支持很简单的调试功能,例如查看内核数据结构、打印现场信息等。 应用最广泛的一种Linux系统内核调试方案是系统调用printk函数,printk是在内核中运行的向控制台输出显示的函数,由于Linux操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者之间不能简单地使用指针传递数据,因此利用printk函数实现内核调试的过程如下: 在系统内核空间内,printk把信息写入到IK大的printk_buf中;终端和控制台被初始化之前再把所有信息都缓存在简单的ring buffer(环形缓冲区)中;直到终端和控制台被初始化之后,缓存信息根据调试级别不同有选择性地输出。 在用户空间内,用户空间访问和控制内核日志有两个接口:klogd和dmesg。klogd和dmesg通过glibc的klogctl函数接口调用内核的syslog系统调用获取打印信息。klogd通过读取proc文件系统来从ring buffer (环形缓冲区)中得到由内核printk信息。最终两个接口都调用了 do_syslog函数,实现对log_buf的访问及相关变量的修改。 在用户空间有专门用于记录系统日志的程序,早期的大部分嵌入式系统使用的是klogd+syslogd组合,现在大多数发行版都使用rsyslogd或者syslogd_ng 了。 采用以上方法进行调试必须重新构建并用新内核启动,调试效率比较低。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的MIPS架构操作系统内核的调试装置和相应的MIPS架构操作系统内核的调试方法。 本专利技术一个目的是要提供适用于MIPS架构处理器的Linux内核调试方法。 本专利技术的进一个目的是提高Linux内核调试的调试效率。 依据本专利技术的一个方面,提供了一种MIPS架构操作系统内核的调试方法。该方法包括在操作系统内核的指定地址插入探测点,将与探测点与探测点处理函数关联;在内核执行至探测点时,执行探测点处理函数;由内核预置的调试工具钩住MIPS架构处理器并收集内核调试信息;在探测点处理函数执行完毕后,返回执行操作系统内核。 可选地,在操作系统内核的指定地址插入探测点之前还包括:在编译内核的过程中开启调试工具的使能选项,并对调试工具进行初始化。 可选地,对调试工具进行初始化包括:标记操作系统内部中不能被探测的代码;注册事件通知链函数,以接收MIPS架构处理器下发的异常通知。 可选地,在操作系统内核的指定地址插入探测点包括:获取指定地址;备份被探测指令,并将使用断点指令替换被探测指令。 可选地,执行探测点处理函数包括:执行断点指令,触发断点异常;通过事件通知链函数调用第一处理函数;单步执行备份的被探测指令;在被探测指令执行完毕后,通过事件通知链函数调用第二处理函数。 可选地,调试工具为Linux操作系统的kprobe调试工具;第一处理函数为pre_handler函数,第二处理函数为post_handler函数。 根据本专利技术的另一个目的还提供了一种MIPS架构操作系统内核的调试装置。该MIPS架构操作系统内核的调试装置包括:探测点注册模块,用于在操作系统内核的指定地址插入探测点,将探测点与探测点处理函数关联;函数执行模块,用于在内核执行至探测点时,执行探测点处理函数;调试模块,用于由内核预置的调试工具钩住MIPS架构处理器并收集内核调试信息;返回模块,用于在探测点处理函数执行完毕后,返回执行操作系统内核。 可选地,上述装置还包括:初始化模块,用于在编译内核的过程中开启调试工具的使能选项,并对调试工具进行初始化,其中对调试工具进行初始化包括:标记操作系统内部中不能被探测的代码;注册事件通知链函数,以接收MIPS架构处理器下发的异常通知。 可选地,探测点注册模块还用于:获取指定地址;备份被探测指令,并将使用断点指令替换被探测指令。 可选地,调试模块还用于:执行断点指令,触发断点异常;通过事件通知链函数调用第一处理函数;单步执行备份的被探测指令;在被探测指令执行完毕后,通过事件通知链函数调用第二处理函数。 本专利技术的MIPS架构操作系统内核的调试方法通过置入探测点以及在探测点执行探测点处理函数,钩取MIPS架构处理器以收集调试信息,符合MIPS架构处理器的Linux内核调试要求,使用简单,调试效率高。 进一步地,本专利技术的调试方法在MIPS架构中实现了 kprobe调试工具,在不修改现有代码的基础上,灵活地跟踪内核函数的执行,大大提高了调试的灵活性和调试效率。 上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的【具体实施方式】。 根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。 【附图说明】 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中: 图1是根据本专利技术一个实施例的MIPS架构操作系统内核的调试装置的示意图; 图2是根据本专利技术一个实施例的MIPS架构操作系统内核的调试方法的示意图; 图3是根据本专利技术的实施例的MIPS架构操作系统内核的调试方法中kprobe工具的体系架构图; 图4是根据本专利技术的实施例的MIPS架构操作系统内核的调试方法中kprobe工具的执行流程图;以及 图5是根据本专利技术的实施例的MIPS架构操作系统内核的调试方法中kprobe加载以及卸载流程图。 【具体实施方式】 图1是根据本专利技术一个实施例的MIPS架构操作系统内核的调试装置的示意图,该调试装置一般性地可以包括:探测点注册模块110、函数执行模块120、调试模块130、返回模块140、初始化模块150,本实施例的调试装置100可以根据其所实现的功能,灵活选择配置以上模块,在一些可选实施例中,可以同时配置以上所有模块。 无内部互锁流水级的微处理器(Microprocessor without interlockedpiped stages,简称MIPS),是一种较为流行的精简指令集(Reduced Instruct1n SetComputing,简称RISC)处理器,其尽量利用软件办法避免流水线中的数据相关问题。MIPS的系统结构及设计理念比较先进,发展已经十分成熟。在设计理念上MIPS强调软硬件协同提高性能本文档来自技高网...
【技术保护点】
一种MIPS架构操作系统内核的调试方法,其特征在于包括:在操作系统内核的指定地址插入探测点,将所述探测点与探测点处理函数关联;在所述内核执行至所述探测点时,执行所述探测点处理函数;由所述内核预置的调试工具钩住MIPS架构处理器并收集内核调试信息;在所述探测点处理函数执行完毕后,返回执行所述操作系统内核。
【技术特征摘要】
1.一种MIPS架构操作系统内核的调试方法,其特征在于包括: 在操作系统内核的指定地址插入探测点,将所述探测点与探测点处理函数关联; 在所述内核执行至所述探测点时,执行所述探测点处理函数; 由所述内核预置的调试工具钩住MIPS架构处理器并收集内核调试信息; 在所述探测点处理函数执行完毕后,返回执行所述操作系统内核。2.根据权利要求1所述的方法,其特征在于,在操作系统内核的指定地址插入探测点之前还包括: 在编译所述内核的过程中开启所述调试工具的使能选项,并对所述调试工具进行初始化。3.根据权利要求2所述的方法,其特征在于,对所述调试工具进行初始化包括: 标记所述操作系统内部中不能被探测的代码; 注册事件通知链函数,以接收所述MIPS架构处理器下发的异常通知。4.根据权利要求1至3中任一项所述的方法,其特征在于,在操作系统内核的指定地址插入探测点包括: 获取所述指定地址; 备份被探测指令,并将使用断点指令替换所述被探测指令。5.根据权利要求4所述的方法,其特征在于,执行所述探测点处理函数包括: 执行所述断点指令,触发断点异常; 通过所述事件通知链函数调用第一处理函数; 单步执行备份的所述被探测指令; 在所述被探测指令执行完毕后,通过所述事件通知链函数调用第二处理函数。6.根据权利要求5所述的方法,其特征在于, 所述调试工具为Linux操作...
【专利技术属性】
技术研发人员:李小春,李树金,张久伶,
申请(专利权)人:中标软件有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。