基于内核的双重错误调试方法及系统的制作方法

文档序号:6386394阅读:159来源:国知局
专利名称:基于内核的双重错误调试方法及系统的制作方法
技术领域
本发明涉及计算机及电子信息技术领域,特别涉及一种基于内核的双重错误调试方法及系统。
背景技术
双重错误是处理器异常的一种,具体是指在处理器异常处理例程中又检测到发生了另外的异常。通常情况下,处理器会顺序处理这两个异常,但是这两个异常不能顺序处理时,处理器就会产生“双重错误”。处理器检测到中断或异常时一般有两种处理方式。一种是通过中断门或陷阱门跳转到中断处理例程进行处理;另一种是通过任务门切换到另一个任务(称为“异常处理任务”)进行处理。对于前一种方法需要将当前任务的状态进行压栈,不进行任务切换;对于后一种方法需要进行任务切换,但不会影响前一个任务的内核栈。双重错误是比较严重的一种异常,具体是指在处理器异常处理例程中又检测到发生了另外的异常。通常情况下处理器会顺序处理这两个异常。但是,当这两个异常不能顺序处理时,处理器就会产生“双重错误”。一个任务在发生双重错误后,有可能会导致出错任务的内核栈溢出,不能进行压栈,因此通常采用切换任务的方法进行处理。在Linux内核中,当发生双重错误时,异常处理任务仅仅打印各个寄存器信息,对于出错任务的内核栈信息并没有输出,这对于精确定位出错任务的问题带来一定困难。

发明内容
本发明的目的旨在至少解决上述的技术缺陷之一。为达到上述目的,本发明一方面的实施例提出一种基于内核的双重错误调试方法,包括以下步骤s1:对用户的任务进行处理;S2 :检测到对所述用户任务进行处理的过程中发生双重错误;S3 :通过任务门从所述用户任务中切换到异常处理任务中并对所述双重错误进行处理获得出现双重错误时的运行状态;S4 :根据所述运行状态对内核进行调试。根据本发明实施例的方法,通过异常处理任务获得出现双重错误时的运行状态,并对双重任务的内核进行调试处理,提高了系统的可靠性。本发明的一个实施例中,所述步骤S3具体包括S31 :所述异常处理任务将用户任务的页表中添加映射使内核访问所述用户任务内核栈;以及S32 :根据所述用户任务内核栈获得出现双重错误时的运行状态。本发明的一个实施例中,所述用户任务和所述异常处理任务包括页表和内核栈。为达到上述目的,本发明的实施例另一方面提出一种基于内核的双重错误调试系统,包括第一处理模块,用于对用户的任务进行处理;检测模块,用于检测到对所述用户任务进行处理的过程中发生双重错误;第二处理模块,用于通过任务门从所述用户任务中切换到异常处理任务中并对所述双重错误进行处理获得出现双重错误时的运行状态;以及调试模块,用于根据所述运行状态对内核进行调试。根据本发明实施例的系统,通过异常处理任务获得出现双重错误时的运行状态,并对双重任务的内核进行调试处理,提高了系统的可靠性。本发明的一个实施例中,所述第二处理模块具体包括映射単元,用于所述异常处理任务将用户任务的页表中添加映射使内核访问所述用户任务内核栈;以及获取単元,用于根据所述用户任务内核栈获得出现双重错误时的运行状态。本发明的一个实施例中,所述用户任务和所述异常处理任务包括页表和内核栈。本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。


本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中图1为根据本发明ー个实施例的基于内核的双重错误调试方法的流程图;图2为根据本发明ー个实施例的基于内核的双重错误调试方法的处理过程示意图;以及图3为根据本发明ー个实施例的基于内核的双重错误调试系统的框架图。
具体实施例方式下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过參考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括ー个或者更多个该特征。图1为根据本发明ー个实施例的基于内核的双重错误调试方法的流程图。图2为根据本发明一个实施例的基于内核的双重错误调试方法的处理过程示意图。如图1和图2所示,根据本发明实施例的基于内核的双重错误调试方法,包括以下步骤步骤S101,对用户的任务进行处理。系统对用户的行为以及用户的指示对任务进行处理。步骤S102,检测到对用户任务进行处理的过程中发生双重错误。具体地,在对用户的各种任务进行处理的过程中通过异常或错误的特征检测是否发双重错误。步骤S103,通过任务门从用户任务中切換到异常处理任务中并对双重错误进行处理获得出现双重错误时的运行状态。具体地,首先跳转到异常处理任务,将用户任务的页表中添加映射使内核访问用户任务内核栈。然后,根据用户任务内核栈获得出现双重错误时的运行状态。步骤S104,根据运行状态对内核进行调试。具体地,根据运行状态,井根据出错的具体特性采用对应的方式进行调试来解决双重错误。根据本发明实施例的基于内核的双重错误调试方法,通过异常处理任务获得出现双重错误时的运行状态,并对双重任务的内核进行调试处理,提高了系统的可靠性。图3为根据本发明一个实施例的基于内核的双重错误调试系统的框架图。如图3所示,根据本发明实施例的基于内核的双重错误调试系统包括第一处理模块100、检测模块200、第二处理模块300和调试模块400。具体地,第一处理模块100用于对用户的任务进行处理。系统对用户的行为以及用户的指示对任务进行处理。检测模块200用于检测到对用户任务进行处理的过程中发生双重错误。在对用户的各种任务进行处理的过程中通过异常或错误的特征检测是否发双重错误。第二处理模块300用于通过任务门从用户任务中切换到异常处理任务中并对双重错误进行处理获得出现双重错误时的运行状态。在本发明的一个实施例中,第二处理模块300包括映射单元和获取单元。映射单元用于异常处理任务将用户任务的页表中添加映射使内核访问用户任务内核栈。获取单元用于根据用户任务内核栈获得出现双重错误时的运行状态。调试模块400用于根据运行状态对内核进行调试。根据运行状态,并根据出错的具体特性采用对应的方式进行调试来解决双重错误。根据本发明实施例的基于内核的双重错误调试系统,通过异常处理任务获得出现双重错误时的运行状态,并对双重任务的内核进行调试处理,提高了系统的可靠性。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
权利要求
1.一种基于内核的双重错误调试方法,其特征在于,包括以下步骤 S1:对用户的任务进行处理; 52:检测到对所述用户任务进行处理的过程中发生双重错误; 53:通过任务门从所述用户任务中切换到异常处理任务中并对所述双重错误进行处理获得出现双重错误时的运行状态; 54:根据所述运行状态对内核进行调试。
2.如权利要求1所述的基于内核的双重错误调试方法,其特征在于,所述步骤S3具体包括 531:所述异常处理任务将用户任务的页表中添加映射使内核访问所述用户任务内核栈;以及 532:根据所述用户任务内核栈获得出现双重错误时的运行状态。
3.如权利要求1或2所述的基于内核的双重错误调试方法,其特征在于,所述用户任务和所述异常处理任务包括页表和内核栈。
4.一种基于内核的双重错误调试系统,其特征在于,包括 第一处理模块,用于对用户的任务进行处理; 检测模块,用于检测到对所述用户任务进行处理的过程中发生双重错误; 第二处理模块,用于通过任务门从所述用户任务中切换到异常处理任务中并对所述双重错误进行处理获得出现双重错误时的运行状态;以及 调试模块,用于根据所述运行状态对内核进行调试。
5.一种基于内核的双重错误调试系统,其特征在于,所述第二处理模块具体包括 映射单元,用于所述异常处理任务将用户任务的页表中添加映射使内核访问所述用户任务内核栈;以及 获取单元,用于根据所述用户任务内核栈获得出现双重错误时的运行状态。
6.如权利要求4或5所述的基于内核的双重错误调试系统,其特征在于,所述用户任务和所述异常处理任务包括页表和内核栈。
全文摘要
本发明提出一种基于内核的双重错误调试方法及系统。其中,方法包括以下步骤对用户的任务进行处理;检测到对用户任务进行处理的过程中发生双重错误;通过任务门从用户任务中切换到异常处理任务中并对双重错误进行处理获得出现双重错误时的运行状态;根据运行状态对内核进行调试。根据本发明实施例的方法,通过异常处理任务获得出现双重错误时的运行状态,并对双重任务的内核进行调试处理,提高了系统的可靠性。
文档编号G06F11/07GK103019877SQ20121059138
公开日2013年4月3日 申请日期2012年12月31日 优先权日2012年12月31日
发明者王瑀屏, 郭旭峰 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1