【技术实现步骤摘要】
本专利技术涉及一种操作系统内核态程序的调试方法及装置,特别是涉及一种可以使用普通调试器对内核态程序进行调试的方法及装置。
技术介绍
操作系统为了安全的考虑为程序设计了两种运行态用户态和内核态。普通应用程序运行在用户态,部分特殊程序和操作系统本身运行在内核态。目前的调试器设计来调试用户态的程序,对于内核态的程序,只能使用打印或专用芯片调试接口来进行调试,其缺点是1)使用打印方法其实是没有调试功能,完全根据经验仿制打印语句,而且每次必须重新编译,造成调试效率低下。2)使用专用芯片调试接口的使用方法与芯片相关,各不相同,有较长的学习周期。3)芯片调试接口只能进行原始的语句调试,不能感知进程状态,内存使用等信息,使用很不方便。以上的种种不便使内核态程序的调试很不方便,也导致了开发的困难。因此一般做法是尽量减少内核态程序的编写,只将驱动等简单流程的程序放入内核态,而其它部分放在用户态运行,期望以简单的内核态程序来弥补调试的困难,但这不是根本的解决之道,而且对于性能要求较高的实时应用来说,应尽量将程序放入内核态,以减少不同运行状态之间切换的开销,因此,迫切需要一种能方便在 ...
【技术保护点】
一种调试操作系统内核态程序的方法,其特征在于,通过设置运行在内核态的调试桩模块和运行在用户态的前台调试代理模块,使所述前台调试代理模块与所述调试桩模块进行通信,所述调试桩模块接收来自所述前台调试代理模块的调试信息、控制内核线程的运行并获取内核线程的异常信息;所述内核线程将所述异常信息发送给所述调试桩模块,所述调试桩模块将所述异常信息发送给所述前台调试代理模块并由所述前台调试代理模块返回给调试器,从而使调试器进行对内核态程序的调试。
【技术特征摘要】
1.一种调试操作系统内核态程序的方法,其特征在于,通过设置运行在内核态的调试桩模块和运行在用户态的前台调试代理模块,使所述前台调试代理模块与所述调试桩模块进行通信,所述调试桩模块接收来自所述前台调试代理模块的调试信息、控制内核线程的运行并获取内核线程的异常信息;所述内核线程将所述异常信息发送给所述调试桩模块,所述调试桩模块将所述异常信息发送给所述前台调试代理模块并由所述前台调试代理模块返回给调试器,从而使调试器进行对内核态程序的调试。2.根据权利要求1所述的方法,其特征在于,所述内核线程的运行控制包括断点异常处理、单步异常处理、内核信号的处理、读/写内核的内存以及读/写内核的寄存器。3.根据权利要求2所述的方法,其特征在于,所述异常信息包括断点异常信息和/或单步异常信息。4.根据权利要求3所述的方法,其特征在于,所述断点异常处理包括遇到一个断点之后,触发一次异常,判断该异常是普通的内核异常还是真正断点异常,如果是普通的内核异常,则转入普通的内核异常处理程序;如果是断点异常则执行正常的断点处理程序。5.根据权利要求4所述的方法,其特征在于,所述断点异常处理进一步包括如果被调试内核线程停止在普通内核空间,则所述异常不是真正断点异常,仿真一次单步的执行,使线程先从普通内核空间返回到内核应用程序空间中;如果被调试内核线程停止在内核应用程序空间,则所述异常是真正断点异常;如果是内核线程本身发生异常,则所述异常是真正断点异常。6.根据权利要求3所述的方法,其特征在于,所述单步异常处理包括判断异常是普通的内核异常还是真正单步异常,如果是普通的内核异常,则转入普通的内核异常处理程序;如果是真正单步异常则执行正常的单步异常处理程序。7.根据权利要求6所述的方法,其特征在于,所述单步异常处理进一步包括如果线程运行在普通内核空间,则该异常不是真正单步异常,退出该异常处理,返回线程所在的原程序;如果该线程是内核线程,则该异常是真正单步异常,转入正常的单步异常处理程序。8.根据权利要求2、3、4、5、6或7所述的方法,其特征在于,所述内核信号处理包括打开被调试的内核线程的断点异常信号、单步异常信号和停止信号的信号屏蔽,使得内核线程在接收所述三种信号的时候能够处理该信号;增加信号处理时机,在调试的时候,使内核线程从普通内核空间跳转到内核线程空间的时候进行一次信号处理。9.根据权利要求8所述的方法,其特征在于,所述读/写内核的内存空间包括内核调试桩判断该次读/写是否发生在调试状态,是则由内核调试桩接管该次读写内存的任务。10.根据权利要...
【专利技术属性】
技术研发人员:刘飞,程圣宇,李翌,缪敬,
申请(专利权)人:中兴通讯股份有限公司,
类型:发明
国别省市:94[中国|深圳]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。