CN102193838A - 生成独立程序以修复主程序的系统及其方法 - Google Patents

生成独立程序以修复主程序的系统及其方法 Download PDF

Info

Publication number
CN102193838A
CN102193838A CN2010101177956A CN201010117795A CN102193838A CN 102193838 A CN102193838 A CN 102193838A CN 2010101177956 A CN2010101177956 A CN 2010101177956A CN 201010117795 A CN201010117795 A CN 201010117795A CN 102193838 A CN102193838 A CN 102193838A
Authority
CN
China
Prior art keywords
master routine
repair procedure
server
reparation
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2010101177956A
Other languages
English (en)
Inventor
邱全成
蔡敏捷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inventec Corp
Original Assignee
Inventec Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inventec Corp filed Critical Inventec Corp
Priority to CN2010101177956A priority Critical patent/CN102193838A/zh
Publication of CN102193838A publication Critical patent/CN102193838A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种生成独立程序以修复主程序的系统及其方法,其通过异常处理子程序生成独立于主程序之外的自动修复程序后,由自动修复程序依据下载自服务器的修复资料修复主程序的技术手段,可以让软件自动修复发生异常状况的原因,并达成减低软件发生相似异常状况的机率的技术功效。

Description

生成独立程序以修复主程序的系统及其方法
技术领域
本发明涉及一种程序修复系统及其方法,特别是指一种生成独立程序以修复主程序的系统及其方法。
背景技术
软件为一系列按照特定顺序组织的电脑资料和指令的集合,其是由开发者以组合语言、C/C++、Java等各种程序语言撰写而成。
由于软件是由开发者进行撰写,因此,软件不可避免的会存在开发者没有发现的缺陷,例如未完全释放内存、容易被外部程序攻击、存取错误的资料等。软件被开发者发布(publish)之后,使用者在使用软件的过程中,可能会因为某些操作触发未被开发者发现的缺陷,因而影响使用者的使用,其中,某些缺陷不会让软件无法正常使用,例如预设资料所显示的栏位错误、浪费大量的存储器等,但是某些缺陷却会导致软件异常甚至崩溃(crash),如此将严重影响使用者继续使用软件。
鉴于以上情况,目前大部分的软件开发者为了要修正软件在开发阶段未被找出的缺陷,因此都会在主程序中设置异常处理子程序。如此,在软件被发布给使用者使用后,若软件中的缺陷造成异常状况发生时,异常处理子程序会被主程序执行,借以将错误讯息传送给开发者供作为开发者进行除错使用。然而,在软件出现缺陷时,使用者往往无法立即解决发生异常状况的问题,从而导致工作将无法继续完成,只能被迫中端原先进行中的工作,或重新执行软件而让原先进行中的工作重头来过,这样情况会造成使用者在使用上很大的困扰。
综上所述,可知现有技术中长期以来一直存在软件在发生异常状况时,只能重新执行而无法解决发生异常状况的原因的问题,因此有必要提出改进的技术手段,来解决此一问题。
发明内容
有鉴于现有技术存在软件无法解决发生异常状况的原因的问题,本发明于是公开一种生成独立程序以修复主程序的系统及其方法,其中:
本发明所公开的生成独立程序以修复主程序的系统,至少包含:主程序,其中更设置异常(exception)处理子程序,异常处理子程序于主程序中发生异常状况时,被主程序执行;自动修复程序,由异常处理子程序所生成,独立于主程序之外,用以至服务器下载修复资料,并依据修复资料修复主程序。
本发明所公开的生成独立程序以修复主程序的系统,自动修复程序更用以收集对应异常状况的错误讯息,并依据错误讯息至服务器下载修复资料,其中,自动修复程序更用以传送包含错误讯息的错误资讯至服务器,并依据服务器传回对应错误资讯的诊断意见至服务器下载修复资料。
本发明所公开的生成独立程序以修复主程序的系统,自动修复程序更用以判断服务器上是否储存修复资料及/或提供确认下载修复资料、或更用以收集包含与异常状况对应的错误讯息的错误资讯,并传送错误资讯至服务器,使服务器储存错误资讯。
本发明所公开的生成独立程序以修复主程序的方法,其步骤至少包括:于主程序中设置异常处理子程序;当主程序中发生异常状况时,执行异常处理子程序;异常处理子程序生成独立于主程序外的自动修复程序;自动修复程序至服务器下载修复资料;自动修复程序依据修复资料修复主程序。
本发明所公开的生成独立程序以修复主程序的方法,其中,自动修复程序至服务器下载修复资料的步骤,更包含自动修复程序收集对应异常状况的错误讯息,并依据错误讯息至服务器下载相对应的修复资料的步骤,另外,自动修复程序依据错误讯息至服务器下载相对应的修复资料的步骤,更包含自动修复程序传送包含错误讯息的错误资讯至服务器,并依据服务器传回对应错误资讯的诊断意见,至服务器下载修复资料的步骤。
本发明所公开的生成独立程序以修复主程序的方法,于自动修复程序至服务器下载修复资料的步骤前,更包含自动修复程序判断服务器上已储存修复资料及/或自动修复程序提供确认下载修复资料的步骤。
本发明所公开的生成独立程序以修复主程序的方法,其中更包含自动修复程序收集包含与异常状况对应的错误讯息的错误资讯,并传送错误资讯至服务器储存的步骤。
本发明所公开的系统与方法如上,与现有技术之间的差异在于本发明通过异常处理子程序生成独立于主程序之外的自动修复程序后,由自动修复程序依据下载自服务器的修复资料修复主程序,借以解决现有技术所存在的问题,并可以达成减低软件发生相似异常状况的机率的技术功效。
附图说明
图1为本发明所提的生成独立程序以修复主程序的系统架构图。
图2A为本发明所提的生成独立程序以修复主程序的方法流程图。
图2B为本发明所提的另一种生成独立程序以修复主程序的方法流程图。
图2C为本发明所提的自动修复程序下载对应错误讯息的修复资料的详细方法流程图。
图3为本发明实施例所提的确认修复主程序的对话方块示意图。
【主要元件符号说明】
100主程序
110异常处理子程序
200自动修复程序
400对话方块
500服务器
具体实施方式
以下将配合图式及实施例来详细说明本发明的特征与实施方式,内容足以使任何熟习相关技艺者能够轻易地充分理解本发明解决技术问题所应用的技术手段并据以实施,借此实现本发明可达成的功效。
本发明是在主程序中设置异常(exception)处理子程序,使得当主程序在执行过程中发生异常状况时,改为执行异常处理子程序,异常处理子程序在执行后,会生成在主程序之外独立运作的自动修复程序,如此,自动修复程序便可以在主程序结束执行后修复主程序中发生异常状况的部分。本发明所提的异常状况是指软件的主程序无法让使用者正常使用的情况,包含但不限于软件在执行过程中发生错误或是崩溃等。
以下先以图1本发明所提的生成独立程序以修复主程序的系统架构图来说明本发明的系统运作。如图1所示,本发明的系统主要含有主程序100、自动修复程序200。其中,主程序100更设置有异常处理子程序110。
主程序100为任何软件中的主要程序,负责提供使用者使用该软件。例如;字典软件中的字词查找程序、电子邮件软件中的邮件接收程序等,但主程序100并不以此为限。
异常处理子程序110设置于主程序100中,通常为主程序100发生异常状况时的统一入口,也就是说,当主程序100发生异常状况时,主程序100会停止执行发生异常状况的子程序(也就是当异常状况发生时正被执行的子程序),并且开始执行异常处理子程序110。而在异常处理子程序110在被主程序100执行后,会生成独立于主程序100之外的自动修复程序200。
随着开发主程序100的程序语言的不同,在主程序100中设置异常处理子程序110的方式也不同。例如,以程序语言「Java」所开发的主程序100中,可以使用类别(class)为「ThreadGroup」中的函式「uncaughtException()」来取得与主程序100发生的异常状况对应的错误讯息,函式「uncaughtException()」会在主程序100发生异常时被Java的执行环境,也就是Java虚拟机器(Java Virtual Machine,JVM)所执行,Java虚拟机器会将捕获的错误讯息通过函式「uncaughtException()」传递给主程序100,在主程序100取得与发生的异常状况对应的错误讯息后,主程序100便会停止执行原先执行的子程序,并转而执行异常处理子程序110;而在其他的某些程序语言中,主程序100也可以通过执行环境以相似的过程取得与发生的异常状况对应的错误讯息,例如,可以使用结构化异常处理机制「SetUnhandledExceptionFilter」或是向量异常处理机制「AddVectoredExceptionHandler」来取得与主程序100发生的异常状况相对应的错误讯息,使得主程序100停止执行发生异常状况的子程序,并执行异常处理子程序110。
自动修复程序200是在异常处理子程序110被执行后,由异常处理子程序110所生成。虽然自动修复程序200被异常处理子程序110所生成,但异常处理子程序110将生成独立于主程序100之外的自动修复程序200,也就是说,自动修复程序200与主程序100在执行环境中为两个不相关的程序(process)。上述的执行环境为执行主程序100以及自动修复程序200的环境,通常为处理器(processor)以及存储器所组成。
自动修复程序200负责连线到外部的服务器500下载修复资料,并依据其所下载的修复资料修复主程序100。
自动修复程序200除了在开始执行后连线到服务器500下载修复资料之外,更可以在下载修复资料之前,通过执行环境或异常处理子程序110取得主程序100发生异常状况时的错误资讯。其中,自动修复程序200所收集的错误资讯包含但不限于与发生的异常状况对应的错误讯息、当前执行的所有程序的程序识别资料、存储器使用状况等,但本发明并不以此为限。
在自动修复程序200收集到发生异常状况时的错误资讯后,自动修复程序200可以传送错误资讯至服务器500储存,借以提供开发者参考,使得开发者可以找出异常状况的发生原因并制作修复资料,自动修复程序200也可以依据收集到的错误资讯至服务器500下载相对应的修复资料。
另外,在自动修复程序200依据错误讯息至服务器500下载相对应的修复资料时,若自动修复程序200先传送错误讯息或包含错误讯息的错误资讯至服务器500,则服务器500可能会直接传回修复资料给自动修复程序200,不过,服务器500也可能会传回对应错误讯息的诊断意见,使得自动修复程序200可以依据服务器500传回的诊断意见,再次至服务器500下载修复资料。
自动修复程序200自服务器500下载的修复资料例如是主程序100的更新档,或是提供自动修复程序200直接修改主程序100的档案内容的修复指令等,但本发明并不以此为限,只要可以让主程序100发生的异常状况被修正的任何资料都属于本发明所提的修复资料。当修复资料为主程序100的更新档时,自动修复程序200会使用更新档覆盖主程序100,其中,自动修复程序200自服务器500下载的更新档可能包含执行为主程序100的所有档案,也可能仅为用来取代主程序100中包含发生异常状况的程序的新档案。
特别值得一提的是,由于自动修复程序200独立于主程序100之外,故当主程序100发生异常状况时而造成主程序100结束执行时,自动修复程序200不会受到主程序100结束执行的影响,而可以继续执行,并不会像由主程序100所执行的异常处理子程序110,会受到主程序100结束执行的影响而与主程序100一同结束执行。如此,自动修复程序200将可以完成修复主程序100所产生的异常状况。
接着以第一实施例来解说本发明的运作系统与方法,并请参照图2A本发明所提的生成独立程序以修复主程序的方法流程图。
在本实施例中,假设使用者使用的文书编辑软件中包含本发明,也就是说,主程序100为文书编辑软件,而开发文书编辑软件的开发者在文书编辑软件中设置了异常处理程序110(步骤301)。
当使用者在使用文书编辑软件的过程时,文书编辑软件产生异常状况,例如产生异常的数据等,造成文书编辑软件无法继续提供使用者编辑文字,则错误讯息将会被执行环境捕捉并传递给主程序100,因而让文书编辑软件中的文书编辑子程序停止执行,而改成执行文书编辑软件中的异常处理子程序110(步骤310)。
在异常处理子程序110被主程序100执行之后,异常处理子程序110会生成与主程序100无关的自动修复程序200(步骤320),异常处理子程序110完成其所负责的任务,如此,主程序100会在此时结束执行。
在自动修复程序200被异常处理子程序110生成(步骤320)后,自动修复程序200将可以直接连线至服务器500下载修复资料(步骤370a),在本实施例中,假设自动修复程序200所下载的修复资料为主程序100的完整档案(新的主程序),则自动修复程序200会直接将至服务器500下载的新的主程序覆盖主程序100,借以修复主程序100(步骤380)。
在上述的第一实施例中,自动修复程序200在连线至服务器500后,下载修复资料(步骤370a)前,更可以判断服务器500上是否储存有新版本的修复资料(步骤350a),若是,则自动修复程序200会下载修复资料(步骤370a),若否,则自动修复程序200将不会进行任何动作。
同样在上述的第一实施例中,自动修复程序200更可以在连线至服务器500下载修复资料(步骤370a)前,显示如图3的对话方块400,借以提供使用者确认是否需要下载修复资料(步骤360),若使用者确认下载修复资料,例如,按下「更新」按键,则自动修复程序200将会下载修复资料(步骤370a),若使用者不希望下载修复资料,则可以按下「取消」按键,如此,自动修复程序200将不会下载修复资料。
接着继续以第二实施例来解说本发明的运作系统与方法,并请参照图2B本发明所提的另一种生成独立程序以修复主程序的方法流程图。
本实施例与上述实施例相似,假设当使用者在使用文书编辑软件的过程时,文书编辑软件因为产生异常状况而停止执行文书编辑子程序,并开始执行文书编辑软件中的异常处理子程序110(步骤310)。而后,异常处理子程序110会生成独立于主程序100之外的自动修复程序200(步骤320)。
自动修复程序200在被异常处理子程序110生成后,会通过执行环境或异常处理子程序110收集与文书编辑软件发生的异常状况对应的错误讯息(步骤340),并至服务器500下载与错误讯息对应的修复资料(步骤370b),在本实施例中,假设自动修复程序200所下载的修复资料为主程序100的部分档案,例如为主程序100中产生异常状况的的程序档的更新档,则自动修复程序200会使用至服务器500下载的更新档更新主程序100,借以修复主程序100(步骤380)。
在上述的第二实施例中,自动修复程序200依据错误讯息下载相对应的修复资料(步骤370b)的过程,更可以如图2C所示,先将其所收集到的错误讯息传送至服务器500(步骤371),再接收服务器500依据错误讯息进行分析后所产生的诊断讯息,并依据服务器500所传回的诊断讯息再至服务器500下载修复资料(步骤375)。
与第一实施例相似的,在上述第二实施例中,自动修复程序200在连线至服务器500后,依据错误讯息下载相对应的修复资料(步骤370b)前,更可以判断服务器500上是否储存有与错误讯息对应的修复资料(步骤350b),若是,则自动修复程序200会下载修复资料(步骤370b),若否,则自动修复程序200可能将包含错误讯息、当前执行的所有程序的程序识别资料、以及存储器使用状况的错误资讯以电子邮件传送给开发者、或以FTP等方式传送至服务器500储存(步骤390),也可能不进行任何动作。
同样与第一实施例相似的,在上述第二实施例中,自动修复程序200更可以在连线至服务器500下载与错误讯息对应的修复资料(步骤370b)前,显示如图3的对话方块400,借以提供使用者确认是否需要下载修复资料(步骤360),若使用者确认下载修复资料,例如,按下「更新」按键,则自动修复程序200将会下载修复资料(步骤370b)。
综上所述,可知本发明与现有技术之间的差异在于具有在异常处理子程序110生成独立于主程序100之外的自动修复程序后,由自动修复程序200依据下载自服务器500的修复资料修复主程序100的技术手段,借由此一技术手段可以解决现有技术所存在软件无法解决发生异常状况的原因的问题,进而达成减低软件发生相似异常状况的机率的技术功效。
另外,在上述两实施例中,若自动修复程序200所下载的修复资料为提供自动修复程序200修改主程序100的档案内容的修复指令(步骤370a、370b),则自动修复程序200将会依据修复指令修改主程序100的档案中特定位址的内容,借以修复主程序100(步骤380)。
再者,本发明的生成独立程序以修复主程序的方法,可实现于硬件、软件或硬件与软件的组合中,也可在电脑系统中以集中方式实现或以不同元件散布于若干互连的电脑系统的分散方式实现。
虽然本发明所公开的实施方式如上,只是所述的内容并非用以直接限定本发明的专利保护范围。任何本发明所属技术领域中具有通常知识者,在不脱离本发明所公开的精神和范围的前提下,对本发明的实施的形式上及细节上作些许的更动润饰,均属于本发明的专利保护范围。本发明的专利保护范围,仍须以所附的权利要求范围所界定者为准。

Claims (10)

1.一种生成独立程序以修复主程序的方法,其特征在于,该方法至少包含下列步骤:
于一主程序中设置一异常处理子程序;
当该主程序中发生一异常状况时,执行该异常处理子程序;
该异常处理子程序生成独立于该主程序外的一自动修复程序;
该自动修复程序至一服务器下载一修复资料;及
该自动修复程序依据该修复资料修复该主程序。
2.如权利要求1所述的生成独立程序以修复主程序的方法,其特征在于,该自动修复程序至该服务器下载该修复资料的步骤,更包含该自动修复程序收集对应该异常状况的一错误讯息,并依据该错误讯息至该服务器下载相对应的该修复资料的步骤。
3.如权利要求2所述的生成独立程序以修复主程序的方法,其特征在于,该自动修复程序依据该错误讯息至该服务器下载相对应的该修复资料的步骤,更包含该自动修复程序传送包含该错误讯息的一错误资讯至该服务器,并依据该服务器传回对应该错误资讯的一诊断意见,至该服务器下载该修复资料的步骤。
4.如权利要求1所述的生成独立程序以修复主程序的方法,其特征在于,该方法于该自动修复程序至该服务器下载该修复资料的步骤前,更包含该自动修复程序判断该服务器上已储存该修复资料及/或该自动修复程序提供确认下载该修复资料的步骤。
5.如权利要求1所述的生成独立程序以修复主程序的方法,其特征在于,该方法更包含该自动修复程序收集包含与该异常状况对应的一错误讯息的一错误资讯,并传送该错误资讯至该服务器储存的步骤。
6.一种生成独立程序以修复主程序的系统,其特征在于,该系统至少包含:
一主程序,其中更设置一异常处理子程序,该异常处理子程序于该主程序中发生一异常状况时,被该主程序执行;及
一自动修复程序,由该异常处理子程序所生成,独立于该主程序之外,用以至一服务器下载一修复资料,并依据该修复资料修复该主程序。
7.如权利要求6所述的生成独立程序以修复主程序的系统,其特征在于,该自动修复程序更用以收集对应该异常状况的一错误讯息,并依据该错误讯息至该服务器下载该修复资料。
8.如权利要求7所述的生成独立程序以修复主程序的系统,其特征在于,该自动修复程序更用以传送包含该错误讯息的一错误资讯至该服务器,并依据该服务器传回对应该错误资讯的一诊断意见至该服务器下载该修复资料。
9.如权利要求6所述的生成独立程序以修复主程序的系统,其特征在于,该自动修复程序更用以判断该服务器上是否储存该修复资料及/或更用以提供确认下载该修复资料。
10.如权利要求6所述的生成独立程序以修复主程序的系统,其特征在于,该自动修复程序更用以收集包含与该异常状况对应的一错误讯息的一错误资讯,并传送该错误资讯至该服务器,使该服务器储存该错误资讯。
CN2010101177956A 2010-03-02 2010-03-02 生成独立程序以修复主程序的系统及其方法 Pending CN102193838A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010101177956A CN102193838A (zh) 2010-03-02 2010-03-02 生成独立程序以修复主程序的系统及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010101177956A CN102193838A (zh) 2010-03-02 2010-03-02 生成独立程序以修复主程序的系统及其方法

Publications (1)

Publication Number Publication Date
CN102193838A true CN102193838A (zh) 2011-09-21

Family

ID=44601945

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010101177956A Pending CN102193838A (zh) 2010-03-02 2010-03-02 生成独立程序以修复主程序的系统及其方法

Country Status (1)

Country Link
CN (1) CN102193838A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1266226A (zh) * 1999-03-04 2000-09-13 英业达股份有限公司 系统运行正确性的检测方法
US6633997B1 (en) * 1999-06-22 2003-10-14 Nec Corporation System for automatically restoring trouble, method and storage medium
CN101373450A (zh) * 2007-08-21 2009-02-25 联想(北京)有限公司 处理cpu异常的方法及系统
CN101529385A (zh) * 2005-06-01 2009-09-09 纽约市哥伦比亚大学理事会 用于修复应用程序的方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1266226A (zh) * 1999-03-04 2000-09-13 英业达股份有限公司 系统运行正确性的检测方法
US6633997B1 (en) * 1999-06-22 2003-10-14 Nec Corporation System for automatically restoring trouble, method and storage medium
CN101529385A (zh) * 2005-06-01 2009-09-09 纽约市哥伦比亚大学理事会 用于修复应用程序的方法和系统
CN101373450A (zh) * 2007-08-21 2009-02-25 联想(北京)有限公司 处理cpu异常的方法及系统

Similar Documents

Publication Publication Date Title
US20120331449A1 (en) Device, method and computer program product for evaluating a debugger script
US8316349B2 (en) Deployment script generation and execution
US8161458B2 (en) Method and apparatus to increase efficiency of automatic regression in “two dimensions”
US9021471B2 (en) Managing change-set delivery
US7743282B2 (en) Capturing computer application diagnostics
JP4395761B2 (ja) プログラムテスト支援装置およびその方法
WO2014120192A1 (en) Error developer association
US8930761B2 (en) Test case result processing
US20060080638A1 (en) Automated multi-platform build and test environment for software application development
JP2009121832A (ja) 分析装置、分析システム及びコンピュータプログラム
US7571429B2 (en) System and method for error reporting
US20060271771A1 (en) Exception tagging
JPH10275093A (ja) プログラムテスト支援装置
JP2005258501A (ja) 障害影響範囲解析システム及び障害影響範囲解析方法及びプログラム
US7363615B2 (en) Stack-based callbacks for diagnostic data generation
US20050283763A1 (en) Exception test support technique
US8661343B2 (en) Computer-implemented systems and methods for an automated application interface
JP2009230618A (ja) 設計書作成プログラム、該装置、及び該方法
US9645869B2 (en) Using exception information
CN102193838A (zh) 生成独立程序以修复主程序的系统及其方法
Vierhauser et al. Evolving systems of systems: Industrial challenges and research perspectives
JP2007025820A (ja) ソフトウェアのリスク診断プログラム
JP2008186378A (ja) 例外に対処するためのプログラム
JP2007257077A (ja) プログラムデバッグ装置、プログラムデバッグ方法およびデバッグプログラム
KR102222387B1 (ko) 전자기록물의 이관 시스템 및 그 구동방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110921