一种快速诊断系统软件缺陷的系统及方法

文档序号:6612894阅读:159来源:国知局

专利名称::一种快速诊断系统软件缺陷的系统及方法
技术领域
:本发明涉及一种诊断系统软件缺陷的系统及方法[特别是涉及一种对导致系统错误的系统程序缺陷进行快速定位并向用户回馈的系统及方法。
背景技术
:目前,一个OS(OperatingSystem,操作系统)中可能会出现各种的问题,比如硬件损坏、配置错误、软件缺陷(bug)等,在面对各种使用者的需求时,软件设计者必须要先了解清楚使用者的需要,然后进行软件需求的规划,其次定义软件的系统模式,再以树形图将每一项功能模式的关系表达清楚,以确定不同功能模式间的影响程度、数据来源与安全性等,接着软件设计者便开始构建各功能模式的主题架构,然后针对每一功能模式作细部规划,规划完成后,则开始进行实际的程序代码编写,此时必需依据主题架构与细部设计所构建的各功能模式来编写程序代码,以求软件的功能达到使用者的要求,当软件的程序代码编写完成以后,必须进行软件缺陷的诊断,其次是诊断程序执行的结果是否符合原先设计的要求,此时,软件设计者必需判断每一项单独功能模式的输入与输出的数据是否符合原来的要求,除此之外,系统的整体表现也要加以诊断,即使功能合乎需求,若执行速度非常慢,则此软件也无法满足使用者的需求。在软件程序的编码及缺陷诊断的过程中,最繁琐的步骤即为除错步骤,软件设计者必须了解软件中的每一项缺陷,并以最简捷的步骤快速诊断出软件的缺陷,所以软件设计者通常要依据本身的经验,针对经常遇到的缺陷进行软件程序的诊断,若是,无法全面地诊断出软件的所有缺陷,结果往往会导致当软件设计者将软件送交给软件使用者使用时,在使用者对软件进行测试的过程中,经常会发现很多之前没有诊断到的软件缺陷。另外,如果软件设计者针对软件的每一项功能逐一进行诊断,又会浪费许多时间,而且,若只是针对每一项功能进行诊断,将无法对软件的整体功能作出较为完整的诊断,有些情况下,有经验的软件测试者可以很快定位问题或缺陷的症结所在,但是有些情况下,即使是有经验的软件测试者也需要几个小时甚至数天时间才能准确定位软件中的问题或缺陷所在,这样,无疑会延长诊断软件故障或缺陷的时间,增加了软件维护、更新的成本。
发明内容本发明的目的在于提供一种快速诊断系统软件缺陷的系统及方法,用以对导致系统错误(error)的系统程序缺陷(fault)进行快速定位并向用户回馈,解决上述公知技术中的问题。本发明所提供的一种快速诊断系统软件缺陷的系统的较佳方案之一,包含一个操作系统单元、数个功能模块、一个硬件单元、一个缺陷监控模块、一个缺陷分析模块及一个最小缺陷集合记录回馈模块,其中操作系统单元,用以在系统中写入系统缺陷分析准则的程序,并在系统的程序模块中依照对缺陷分析结果的精细度需求加入数个缺陷插入点;上述各功能模块,用以将系统程序运行过程中在上述各功能模块的缺陷插入点处产生的缺陷管理信息传输至上述缺陷监控模块;硬件单元,通过上述操作系统单元传输系统程序运行过程中硬件程序模块的缺陷插入点产生的缺陷管理信息至上述缺陷监控模块;缺陷监控模块,用以接收操作系统单元及上述各功能模块所传输的缺陷管理信息,且监控此缺陷管理信息,并收集相关的系统缺陷数据传输给缺陷分析模块;缺陷分析模块,通过系统缺陷分析准则的程序实时分析所收集到的系统缺陷数据,借以获得造成系统错误的最小缺陷集合;以及最小缺陷集合记录回馈模块,用以将上述最小缺陷集合实时记录到系统日志中,并回报给用户。其中上述缺陷分析模块通过系统缺陷分析准则的程序对系统中运行着的多个程序任务进行分组,并将从上述各缺陷插入点收集的缺陷数据依照上述程序任务的分组进行分类汇总,且依照系统缺陷分析准则得到单个任务的最小缺陷集合,然后依据系统中各程序任务的调用关系拓扑结构以及对各单个任务的最小缺陷集合的分析结果,再次依照系统缺陷分析准则过滤并选择得出当前系统缺陷的最小缺陷集合。其中上述系统缺陷分析准则为显示所有相关缺陷、显示所有根源缺陷及显示首个关键缺陷。此外,当其中的单个程序任务中出现多个缺陷时,则初始出现的缺陷为此单个程序任务的关键缺陷。本发明所提供的一种快速诊断系统软件缺陷的方法,包含以下步骤预先设定并在系统中写入系统缺陷分析准则的程序;在系统的程序模块中依照对缺陷分析结果的精细度需求加入数个缺陷插入点;系统程序运行过程中在上述各缺陷插入点处产生缺陷管理信息;对此缺陷管理信息进行监控,并收集相关的系统缺陷数据;通过上述系统缺陷分析准则的程序实时分析所收集到的系统缺陷数据,借以获得造成系统错误的最小缺陷集合;以及将此最小缺陷集合实时记录到系统日志中,并回报给用户。上述本发明所提供的一种快速诊断系统软件缺陷的方法,进一步包含以下步骤对上述系统中运行着的多个程序任务进行分组;将从上述各缺陷插入点收集的缺陷数据依照上述程序任务的分组进行分类汇总,并依照系统缺陷分析准则得到单个任务的最小缺陷集合;以及依据系统中各程序任务的调用关系拓扑结构以及对各单个任务的最小缺陷集合的分析结果,再次依照系统缺陷分析准则过滤并选择得出当前系统缺陷的最小缺陷集合。此外,上述系统缺陷分析准则为显示所有相关缺陷、显示所有根源缺陷及显示首个关键缺陷。另外,当其中的单个程序任务中出现多个缺陷时,则初始出现的缺陷为此单个程序任务的关键缺陷。综上所述,本发明的优点在于本发明所提供的一种快速诊断系统软件缺陷的系统及方法,用以对导致系统错误的系统程序缺陷进行快速定位并向用户回馈,其通过预先写入系统的系统缺陷分析准则的程序以及在系统的程序模块中依照对缺陷分析结果的精细度需求所加入的多个缺陷插入点,借以在系统程序运行过程中收集各缺陷插入点处产生的缺陷管理信息及相关的系统缺陷数据,并依据系统缺陷分析准则得到造成系统错误的最小缺陷集合,因而,实现了辅助系统软件测试人员及软件用户快速定位导致系统错误或故障的软件程序缺陷的根源所在,进而大大提高了公知技术中诊断系统软件缺陷的效率,有助于简化公知技术中定位系统故障的难度,减少系统错误定位所消耗的时间。下面结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。图1为本发明的一种快速诊断系统软件缺陷的系统的系统方块图;图2为本发明中多个程序任务的拓扑结构关系图;图3为本发明的一种快速诊断系统软件缺陷的方法的方法流程图;以及图4为图3所示的方法中一个步骤的步骤分解流程图。其中,附图标记10硬件单元20操作系统单元30功能模块40缺陷插入点50缺陷监控模块60缺陷分析模块70最小缺陷集合记录回馈模块80操作系统歩骤200依据用户需求,预先设定并在系统中写入系统缺陷分析准则的程序步骤201在系统的程序模块中依照用户对缺陷分析结果的精细度需求加入数个缺陷插入点步骤202系统程序运行过程中在各缺陷插入点处产生缺陷管理信息步骤203监控此缺陷管理信息,并收集相关的系统缺陷数据步骤204通过系统缺陷分析准则的程序实时分析所收集到的系统缺陷数据,借以获得造成系统错误的最小缺陷集合步骤205将此最小缺陷集合实时记录到系统日志中,并回报给用户步骤2041对系统中运行着的多个程序任务进行分组步骤2042将从各缺陷插入点收集的缺陷数据依照程序任务的分组进行分类汇总,并依照系统缺陷分析准则得到单个任务的最小缺陷集合步骤2043依据系统中各程序任务的调用关系拓扑结构以及对各单个任务的最小缺陷集合的分析结果,再次依照系统缺陷分析准则过滤并选择得出当前系统缺陷的最小缺陷集合实施方式以下,将结合图式部分对本发明的较佳实施方式作详细说明。请参考图1,图中表示了本发明的一种快速诊断系统软件缺陷的系统的系统方块图,用以对导致系统错误的系统程序缺陷进行快速定位并向用户回馈,此系统包含操作系统单元20、数个功能模块30、硬件单元IO、缺陷监控模块50、缺陷分析模块60及最小缺陷集合记录回馈模块70,其中操作系统单元20,用以在系统中写入系统缺陷分析准则的程序,并在系统的程序模块中依照用户对缺陷分析结果的精细度需求加入多个缺陷插入点40;上述各功能模块30,可以将系统程序运行过程中在各功能模块30的缺陷插入点40处产生的缺陷管理信息传输至缺陷监控模块50;硬件单元10可借助例如中断(interrupt)方式通过操作系统单元20将系统程序运行过程中硬件程序模块的缺陷插入点40处产生的缺陷管理信息传输至缺陷监控模块50;缺陷监控模块50,用以接收操作系统单元20及各功能模块30所传输的缺陷管理信息,且监控此缺陷管理信息,并收集相关的系统缺陷数据传输给缺陷分析模块60;缺陷分析模块60,通过系统缺陷分析准则的程序实时分析所收集到的系统缺陷数据,借以获得造成系统错误的最小缺陷集合;以及最小缺陷集合记录回馈模块70,用以将上述最小缺陷集合实时记录到系统日志中,并回报给用户。其中上述缺陷分析模块60通过系统缺陷分析准则的程序对系统中运行着的多个程序任务进行分组,并将从上述各缺陷插入点40收集的缺陷数据依照上述程序任务的分组进行分类汇总,且依照系统缺陷分析准则得到单个任务的最小缺陷集合,其中获得单个任务的最小缺陷集合的过程举例如下假设某个程序任务OAM—xxxl,其内部需要调用三个歩骤,如果这三个步骤要求逐步成功执行,对此任务我们可以得到如下表格中所示的缺陷信息汇总-〉Job:OAMxxxl,Start,PID:26,JoblD:0012-3242-234234-234234,AllStep:3->Job:OAM—xxxl,process,Step:l,begin,JobID:0012-3242-234234-234234->Module:HDD—module,PID:26,File:hdd—write.c,Func:hdd—write—ablock,Line:596,Error國..message:writehdd2error!-〉Job:OAM—xxxl,process,Step:l,end,JobID:0012-3242-234234-234234->Job:OAM—xxxl,process,Step:2,begin,JobID:OO12-3242-234234-234234》Module丄VM一module,PID:26,File:lvm一create.c,Func:lvm—create—inner,Line:596,Error—message:lvm4createerror!-〉Job:OAMxxxl,process,Step:2,end,JobID:OO12-3242-234234-234234->Job:OAM—xxxl,process,Step:3,begin,JobID:0012-3242-234234-234234->Module:RAID—module,PID:26,File:raid一write.c,Func:raid—write—a—block,Line:596,Error—message:RAIDwrite—a—blockcometoanerror!->Module:RAID—module,PID:26,File:raid—write.c,Func:raid—write—a—block,Line:666,Error—message:RAIDwrite—a一blockfreememoryerror!->Module:RAID—module,PID:26,File:raid—write.c,Func:hdd—write,Line:256,Error一message:Raidwriteerror!->Job:OAM—xxxl,process,Step:3,end,JobID:0012-3242-234234-234234->Job:OAM—xxxl,Stop,PID:26,JobID:0012-3242-234234-234234那么我们依据系统缺陷分析准则通过分析上面表格中所示的缺陷信息汇总就可以得到这个任务的最小缺陷集合如下-〉Module:HDD—module,PID:26,File:hdd—write,c,F獄hdd—write—a—block,Line:596,Error—message:writehdd2error!当然单个任务的最小缺陷集合的具体表现形式并不一定要与上面所述的一致,采用上述形式只是从功能上来说较为简单的说明而己,当然,有可能用户希望得到这个任务中的所有缺陷或错误信息,对于这种情况,则可以依据用户需要通过预先配置系统缺陷分析准则得以实现。接下来,对于多个程序任务的系统缺陷的最小缺陷集合是以上述单个任务的最小缺陷集合作为基础生成的,同时还要依据系统中多个程序任务的调用关系拓扑结构,才能使得当前系统的最小缺陷集合的生成成为可能。如图2所示,为本发明中多个程序任务的拓扑结构关系图,其中缺陷分析模块60通过系统缺陷分析准则的程序先对操作系统80中运行着的多个程序任务进行分组,可先将操作系统80分为多个程序任务,例如任务l、任务2及任务3,然后再对单个任务任务l、任务2及任务3依次进行分组,将任务1分为任务4与任务5,任务2分为任务6与任务7,任务3分为任务8,最后任务4又可分为任务9,由此便形成了多个程序任务的拓扑结构关系图。然后,依据此系统中各程序任务的调用关系拓扑结构以及对各单个任务的最小缺陷集合的分析结果,再次依照系统缺陷分析准则过滤选择出根本缺陷,便可较为正确地得出当前系统缺陷的最小缺陷集合。此外,还需特别说明的是,多个程序任务的最小缺陷集合的生成需要建立在对基础源代码进行扫描的基础之上才能得以实现。现将举例加以说明,假设图2中所示的任务1、4、5、9可能具有以下的执行逻辑结构<formula>formulaseeoriginaldocumentpage10</formula>对于因出现不同的缺陷而存在多种筛选缺陷的可能的情况,原则上来说,在定制系统缺陷分析准则时,针对单一程序任务中出现多个缺陷的情况,则初始出现的缺陷应当定义为此程序任务的关键缺陷。举例如下对于上面列出的任务l、4、5、9中出现的缺陷,如果同时出现如下缺陷Fault—occurred—l—in—task—9Fault—occurred—2—in—task—4Fau11—occurred—2—in—task—5我们可以确定关键缺陷应为Fault—occurred—1—in—task—9,则可以得出任务l、4、5、9的最小缺陷集合为此关键缺陷。对于某些情况下,用户有可能希望将上述所举三个缺陷的总和作为最小缺陷集合,对于此种情形,则可以依据用户需要通过预先配置系统缺陷分析准则得以实现。此外,我们还可以利用如下所述的编码原则来判断和得出导致系统错误的系统程序缺陷的最小缺陷集合,假设一系统提供的API(ApplicationProgrammingInterface,应用程序设计接口)名为—interface—1,而此接口内部调用了三个模块的接口—raid—mod—interface—x;—lvm—mod—interface—y;—hdd—mod—interface—z,并且具有一些自身的处理流程。在API接口—interface」自身的处理流程以及—raid—mod—interface—x、—lvm—mod—interface—y、—hdd—mod—interface—z中都可會巨存在缺陷(fault),我们假设在这个API接口jnterface—1中依据程序处理的先后顺序产生了如下表格中所示的缺陷信息<table>tableseeoriginaldocumentpage12</column></row><table>这样,根据上面表格屮所列出的缺陷信息,我们便可以依据系统缺陷分析准则的设置来得出所需要的系统缺陷分析的结果。如果系统缺陷分析准则预先设置为只给初引起系统故障或错误的首要关键缺陷的话,那么我们可以在系统中预先写入一个系统缺陷分析准则的程序或配置档案,以归纳出用户所需要的系统缺陷分析的结果,其中,系统缺陷分析准则至少可以为以下二种方式之一或者其结合1、显示所有相关缺陷;2、显示所有根源缺陷;3、显示首个关键缺陷。如果采用第一种方式,对于上面给出的例子,所得到的最小缺陷集合就是上表中所列的全部缺陷信息;如果采用第二种和/或第三种方式,则需要先进行如下进一步分析1、缺陷3、4、5、8是在API接U中给出的缺陷(闲为模块名为jnterface,因此是API接口—interface—1所在的模块)。2、而其中4、5两个缺陷是在这个接口自身内部处理产生的,因为其引起此缺陷的模块名为NULL,NULL(零)值说明造成这个缺陷的原因为模块自身。3、依据模块名和引起缺陷的模块名这两项,我们可以很容易地得出,缺陷l、2、3实际上是一个缺陷,导致这个缺陷的根本原因是在raid的子模块raid—mod—interface—x—subjod—1中Raid—sub.c的Funcl函数中行数为404的那一行,由于某种原因造成的,而第2个和第3个缺陷都是由于第1个缺陷所形成的,所以对于第二种和/或第三种方式在这里就需要进行缺陷信息的合并,以合并这三个缺陷(缺陷l、2、3)为缺陷l。4、对于缺陷6、7、8与上述对缺陷1、2、3的分析处理相同,在此不再赘述。其中对于第二种情况,合并后得到的缺陷的序号集合为U,4,5,6},此最小缺陷集合依据所有根源缺陷产生的先后顺序得出。而对于第三种情况,上述经过分析得出的缺陷集合U,4,5,6}中的缺陷1即是我们所需要的首个关键缺陷,因而,可以得出最小缺陷集合为缺陷l。在上述系统中可能会产生很多缺陷,而模块和模块间的调用错综复杂,有时一个模块可能被几个不同的API接口所调用,因此,我们可依据以下方式对这些缺陷进行区分1、利用所存在的一个模块间的调用关系拓扑图,以便对模块中的缺陷追溯起到指示作用,再通过模块名和引起此缺陷的模块名进行模块拓扑结构关系的说明。2、为每个缺陷都分配一个当前进程ID(Identification,标识)号,依据此ID号,可知道每个缺陷最终隶属于哪一个API调用,因此很容易便可以将所有隶属于这个API调用的相关缺陷集结起来以便于分析处理。现在请参考图3,此图为本发明的一种快速诊断系统软件缺陷的方法的方法流程图,如图所示,本发明的快速诊断系统软件缺陷的方法包含以下步骤依据用户需求,预先设定并在系统中写入系统缺陷分析准则的程序(步骤200);在系统的程序模块中依照用户对缺陷分析结果的精细度需求加入数个缺陷插入点(步骤201);系统程序运行过程中在上述各缺陷插入点处产生缺陷管理信息(步骤202);监控此缺陷管理信息,并收集相关的系统缺陷数据(歩骤203);通过上述系统缺陷分析准则的程序实时分析所收集到的系统缺陷数据,借以获得造成系统错误的最小缺陷集合(步骤204);将此最小缺陷集合实时记录到系统日志中,并回报给用户(步骤205)。其中,如图4所示,上述本发明的一种快速诊断系统软件缺陷的方法中的步骤204中,可进一步包含以下步骤对上述系统中运行着的多个程序任务进行分组(步骤2041);将从上述各缺陷插入点收集的缺陷数据依照上述程序任务的分组进行分类汇总,并依照系统缺陷分析准则得到单个任务的最小缺陷集合(步骤2042);以及依据系统中各程序任务的调用关系拓扑结构以及对各单个任务的最小缺陷集合的分析结果,再次依照系统缺陷分析准则过滤并选择得出当前系统缺陷的最小缺陷集合(步骤2043)。其中,上述系统缺陷分析准则可为显示所有相关缺陷、显示所有根源缺陷及显示首个关键缺陷的三种方式之一或者其结合。此外,当上述单个程序任务中出现多个缺陷时,则初始出现的缺陷可定义为此单个程序任务的关键缺陷。当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。权利要求1、一种快速诊断系统软件缺陷的系统,用以对导致系统错误的系统程序缺陷进行快速定位并向用户回馈,其特征在于,该系统包含一操作系统单元、数个功能模块、一硬件单元、一缺陷监控模块、一缺陷分析模块及一最小缺陷集合记录回馈模块,其中,该操作系统单元,用以在系统中写入一系统缺陷分析准则的程序,并在系统的程序模块中依照对缺陷分析结果的精细度需求加入数个缺陷插入点;所述各功能模块,用以将系统程序运行过程中在所述各功能模块的缺陷插入点处产生的缺陷管理信息传输至该缺陷监控模块;该硬件单元,通过该操作系统单元传输系统程序运行过程中硬件程序模块的缺陷插入点产生的缺陷管理信息至该缺陷监控模块;该缺陷监控模块,用以接收该操作系统单元及所述各功能模块所传输的缺陷管理信息,且监控该缺陷管理信息,并收集相关的系统缺陷数据传输给缺陷分析模块;该缺陷分析模块,通过该系统缺陷分析准则的程序实时分析所收集到的该系统缺陷数据,借以获得造成系统错误的最小缺陷集合;以及该最小缺陷集合记录回馈模块,用以将该最小缺陷集合实时记录到系统日志中,并回报给用户。2、根据权利要求l所述的快速诊断系统软件缺陷的系统,其特征在于,该缺陷分析模块通过该系统缺陷分析准则的程序对该系统中运行着的多个程序任务进行分组,并将从所述各缺陷插入点收集的缺陷数据依照所述程序任务的分组进行分类汇总,且依照系统缺陷分析准则得到单个任务的最小缺陷集合,然后依据系统中各程序任务的调用关系拓扑结构以及对各单个任务的最小缺陷集合的分析结果,再次依照系统缺陷分析准则过滤并选择得出该当前系统缺陷的最小缺陷集合。3、根据权利要求2所述的快速诊断系统软件缺陷的系统,其特征在于,该系统缺陷分析准则为显示所有相关缺陷、显示所有根源缺陷及显示首个关键缺陷。4、根据权利要求3所述的快速诊断系统软件缺陷的系统,其特征在于,当单个程序任务中出现多个缺陷时,则初始出现的缺陷为该单个程序任务的关键缺陷。5、一种快速诊断系统软件缺陷的方法,用以对导致系统错误的系统程序缺陷进行快速定位并向用户回馈,其特征在于,该方法包含以下步骤预先设定并在系统中写入一系统缺陷分析准则的程序;.在系统的程序模块中依照对缺陷分析结果的精细度需求加入数个缺陷插入点;.系统程序运行过程中在所述各缺陷插入点处产生缺陷管理信息;监控该缺陷管理信息,并收集相关的系统缺陷数据;通过该系统缺陷分析准则的程序实时分析所收集到的该系统缺陷数据,借以获得造成系统错误的最小缺陷集合;以及将该最小缺陷集合实时记录到系统日志中,并回报给用户。6、根据权利要求5所述的快速诊断系统软件缺陷的方法,其特征在于,进一步包含以下步骤对该系统中运行着的多个程序任务进行分组;将从所述各缺陷插入点收集的缺陷数据依照所述程序任务的分组进行分类汇总,并依照系统缺陷分析准则得到单个任务的最小缺陷集合;以及依据系统中各程序任务的调用关系拓扑结构以及对各单个任务的最小缺陷集合的分析结果,再次依照系统缺陷分析准则过滤并选择得出该当前系统缺陷的最小缺陷集合。7、根据权利要求6所述的快速诊断系统软件缺陷的方法,其特征在于,该系统缺陷分析准则为显示所有相关缺陷、显示所有根源缺陷及显示首个关键缺陷。8、根据权利要求7所述的快速诊断系统软件缺陷的方法,其特征在于,当单个程序任务中出现多个缺陷时,则初始出现的缺陷为该单个程序任务的关键缺陷。全文摘要本发明公开了一种快速诊断系统软件缺陷的系统及方法,系用以对导致系统错误的系统程序缺陷进行快速定位并向用户回馈。首先,依据用户需求,预先设定并在系统中写入系统缺陷分析准则的程序,且在系统的程序模块中依照用户对缺陷分析结果的精细度需求加入数个缺陷插入点,然后在系统程序运行过程中在上述各缺陷插入点处产生缺陷管理信息,并对此管理信息进行监控,以收集相关的系统缺陷数据,最后通过系统缺陷分析准则的程序实时分析所收集到的系统缺陷数据,借以获得造成系统错误的最小缺陷集合并实时记录到系统日志中,同时回报给用户。文档编号G06F11/36GK101398781SQ200710163839公开日2009年4月1日申请日期2007年9月30日优先权日2007年9月30日发明者刘庆彪,刘文涵,庄钦平,陈玄同申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1