一种目标软件的崩溃处理方法及装置与流程

文档序号:11918189阅读:338来源:国知局
一种目标软件的崩溃处理方法及装置与流程

本发明涉及计算机技术领域,特别是涉及一种目标软件的崩溃处理方法及装置。



背景技术:

在软件运行的过程中常常会遇到崩溃的状况。通常情况下,在编写软件时,可以在软件自身设置崩溃处理过程,使软件自身具有崩溃处理能力,当软件发生崩溃时,调用系统预置的应用程序编程接口(Application Programming Interface,API)函数来捕获软件崩溃事件,并收集崩溃信息进行分析处理。然而,采用这种软件自身进行崩溃处理的方式,其仅能够解决软件自身发生的崩溃,不能对其他软件的崩溃进行处理。并且,现有技术中更多的软件其本身并没有处理崩溃的功能。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的目标软件的崩溃处理方法及装置。

根据本发明的一个方面,提供了一种目标软件的崩溃处理方法,包括:

加载动态链接模块至所述目标软件;

在所述目标软件发生崩溃时,通过所述动态链接模块调用崩溃处理函数,收集所述目标软件的崩溃信息;

发送所述崩溃信息至服务器。

可选的,所述通过所述动态链接模块调用崩溃处理函数,收集所述目标软件的崩溃信息,具体包括:

利用所述动态链接模块调用所述崩溃处理函数;

根据所述崩溃处理函数,注册回调函数;

在所述回调函数中收集所述崩溃信息。

可选的,在所述发送所述崩溃信息至服务器之后,所述方法还包括:

接收所述服务器对所述崩溃信息分析得到的崩溃分析结果;

展现所述崩溃分析结果。

可选的,在所述动态链接模块调用崩溃处理函数之后,所述方法还包括:

收集所述目标软件当前所处系统下的环境信息;

发送所述环境信息至所述服务器,以使所述服务器能够对所述环境信息进行分析。

可选的,所述动态链接模块具体为输入法模块或嵌入式安全模块。

根据本发明的另一个方面,提供了一种目标软件的崩溃处理装置,包括:

加载模块,用于加载动态链接模块至所述目标软件;

第一信息收集模块,用于在所述目标软件发生崩溃时,通过所述动态链接模块调用崩溃处理函数,收集所述目标软件的崩溃信息;

第一信息发送模块,用于发送所述崩溃信息至服务器。

可选的,所述第一信息收集模块具体包括:

调用单元,用于利用所述动态链接模块调用所述崩溃处理函数;

注册单元,用于根据所述崩溃处理函数,注册回调函数;

收集单元,用于在所述回调函数中收集所述崩溃信息。

可选的,所述装置还包括:

接收模块,用于接收所述服务器对所述崩溃信息分析得到的崩溃分析结果;

展现模块,用于展现所述崩溃分析结果。

可选的,所述装置还包括:

第二信息收集模块,用于收集所述目标软件当前所处系统下的环境信息;

第二信息发送模块,发送所述环境信息至所述服务器。

可选的,所述动态链接模块具体为输入法模块或嵌入式安全模块。

本发明的技术方案通过加载在目标软件中的动态链接模块,当目标软件发生崩溃时,利用动态链接模块来实现对崩溃信息的收集,并将崩溃信息发送给服务器进行分析,从而,实现了对自身不具备崩溃处理能力的软件的崩溃处理,通过在崩溃时对目标软件的崩溃处理,能够帮助关心目标软件崩溃的 人掌握目标软件运行的稳定性情况,有助于后续改进目标软件所存在的问题,提高目标软件的质量。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一个实施例的目标软件的崩溃处理方法的流程图;

图2为本发明一个实施例的目标软件的崩溃处理装置的装置示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,其为本发明一个实施例的目标软件的崩溃处理方法的流程图。在本实施例中,目标软件的崩溃处理方法应用于运行目标软件的客户端设备中,该方法包括如下步骤:

步骤101:加载动态链接模块至目标软件。

具体来讲,动态链接模块是一个动态链接库文件,也是一个模块文件,在使用时,动态链接模块需要加载到目标软件中,动态链接模块本身并不具有独立进程。其中,动态链接模块可以为输入法模块,也可以为嵌入式安全模块。通常情况下,在目标软件中加载输入法模块后,利用输入法模块能够输入信息到目标软件中,而,在目标软件中加载嵌入式安全模块后,嵌入式安全模块能够对目标软件的安全进行监控。

步骤102:在目标软件发生崩溃时,通过动态链接模块调用崩溃处理函数,收集目标软件的崩溃信息。

目标软件自动加载动态链接模块,且,该动态链接模块被成功加载后,动态链接模块不仅能够实现其原有功能,另外,通过动态链接模块还对目标软件 的崩溃情况进行监控。具体的,在目标软件发生崩溃时,将生成一崩溃通知,动态链接模块接收崩溃通知后,调用崩溃处理函数,即SetUnhandledExceptionFilter,根据崩溃处理函数可以注册回调函数,在回调函数中收集崩溃信息,从而,动态链接模块完成对崩溃信息的收集。

步骤103:发送崩溃信息至服务器。

动态链接模块收集到崩溃信息后,先将崩溃信息进行压缩,再通过POST的方式将崩溃信息发送至服务器,具体的,动态链接模块通过网络请求上报至服务器,从而对崩溃信息进行发送。

另一方面,服务器在接收到崩溃信息后,根据崩溃信息进行崩溃分析,在崩溃分析时,通常包含堆栈分析和用户分析,堆栈分析用于确定崩溃发生在哪一个模块,以及导致这个模块崩溃的原因,用户分析用于确定曾经是否发生过相同的崩溃、是否发生过其他崩溃,以及崩溃进程的信息情况。服务器对崩溃信息分析后,得到崩溃分析结果,服务器可以将该崩溃分析结果发送给所述客户端,除此之外,服务器也可以将该崩溃分析结果发送给目标软件的厂商,另外,服务器还可以将该崩溃分析结果同时发送给客户端和目标软件的厂商。其中,崩溃分析结果可以按照汇总、聚合或分类的方法以HTML(Hyper Text Markup Language,超级文本标记语言)网页的形式生成崩溃报告,崩溃报告中可以包括每日崩溃堆栈情况和/或实时崩溃堆栈情况和/或用户崩溃率和/或模块崩溃率和/或堆栈崩溃率。

进一步,在发送崩溃信息至服务器之后,所述方法还包括:

接收服务器对崩溃信息分析得到的崩溃分析结果;

展现所述崩溃分析结果。

具体来讲,当服务器以崩溃报告的形式将崩溃分析结果发送至客户端,客户端接收来自服务器的崩溃报告,并通过目标软件将该崩溃报告展现给使用该客户端的普通用户,以使普通用户了解到目标软件的崩溃情况。其中,崩溃分析报告还可以通过网页的形式进行实现,服务器将与崩溃分析报告相对应的网页地址发送给客户端,以进行展现。同时,服务器还可以将该网页地址发送给关心目标软件崩溃的目标软件的厂商,使目标软件的厂商也能够了解到目标软件的崩溃情况,掌握目标软件运行的稳定性。

本申请利用目标软件中通常会加载的动态链接模块来实现对崩溃信息的收集,使得自身不具备崩溃处理能力的软件也能够完成崩溃处理,从而帮助普通用户和目标软件的厂商等关心目标软件崩溃的人掌握目标软件运行的稳定性情况,有助于后续改进目标软件所存在的问题,提高目标软件的质量。同时,由于动态链接模块通常是客户端在运行目标软件时的必备程序,因此,本申请无需在目标软件所处的客户端中安装额外的第三方调试软件(如现有的用于崩溃处理的第三方调试软件WinDbg,并借助该第三方调试软件对目标软件进行崩溃处理),使得对目标软件的崩溃处理变得简单,且容易实现。

可选的,本申请在动态链接模块调用崩溃处理函数之后,所述方法还包括:

收集目标软件当前所处系统下的环境信息;

发送环境信息至服务器。

在具体实施过程中,动态链接模块在接收到崩溃通知后,还可以收集当前所处系统下的环境信息,例如,系统进程信息、客户端的资源利用情况等等,在收集到环境信息后,将环境信息和崩溃信息一同进行压缩,再通过POST的方式将压缩后的信息发送到服务器,以供服务器对崩溃信息和环境信息进行综合分析。

当服务器接收到的信息中包含环境信息时,服务器根据环境信息进行环境分析,环境分析包括收集用户IP地址,客户端的内存、操作系统版本和当前环境进程等等。服务器在对环境信息进行分析后,可以将环境分析的结果结合到崩溃分析结果中,一同以崩溃报告的形式发送至客户端和/或目标软件的厂商。

下面以动态链接模块是输入法模块为例,对本申请的目标软件的崩溃处理方法进行详细描述。

在目标软件中执行切换输入法操作,当切换出与输入法模块对应的输入法后,表明输入法模块成功加载到了目标软件的进程中。进一步,当目标软件发生崩溃事件,生成崩溃通知,输入法模块捕获到崩溃通知后,输入法模块调用崩溃处理函数,利用该崩溃处理函数可以注册回调函数,在回调函数中不仅可以收集崩溃信息,还可以收集可选的环境信息,进而,输入法模块将收集到的 崩溃信息和环境信息压缩后通过POST方式发送至服务器。服务器接收到来自客户端的输入法模块发送的信息后,对崩溃信息和环境信息进行分析,并生成崩溃分析报告。服务器将与崩溃分析报告对应的网页地址发送给客户端和/或目标软件的厂商,以帮助关心目标软件崩溃的人掌握目标软件运行的稳定性情况,有助于后续改进目标软件所存在的问题,提高目标软件的质量。

与上述的方法实施例相适应,图2为本发明一个实施例的目标软件的崩溃处理装置的装置示意图,如图所示,该装置包括:

加载模块201,用于加载动态链接模块至所述目标软件;

第一信息收集模块202,用于在所述目标软件发生崩溃时,通过所述动态链接模块调用设置崩溃处理函数,收集所述目标软件的崩溃信息;

第一信息发送模块203,用于发送所述崩溃信息至服务器。

其中,第一信息收集模块202可以包括:调用单元,用于利用所述动态链接模块调用所述崩溃处理函数;注册单元,用于根据所述崩溃处理函数,注册回调函数;收集单元,用于在所述回调函数中收集所述崩溃信息。

其中,上述装置还可以包括:接收模块,用于接收所述服务器对所述崩溃信息分析得到的崩溃分析结果;展现模块,用于展现所述崩溃分析结果。

其中,上述装置还可以包括:第二信息收集模块,用于收集所述目标软件当前所处系统下的环境信息;第二信息发送模块,发送所述环境信息至所述服务器。

其中,动态链接模块具体为输入法模块或嵌入式安全模块。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的 不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本说明书应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1