一种客户端崩溃通知方法、装置及设备与流程

文档序号:23980802发布日期:2021-02-20 09:34阅读:57来源:国知局
一种客户端崩溃通知方法、装置及设备与流程

[0001]
本发明涉及通信技术领域,尤其涉及一种客户端崩溃通知方法、装置及设备。


背景技术:

[0002]
目前对于windows平台基于qt开发的pc客户端,在测试和上线阶段以及最终的发布和用户的正式使用阶段,由于软件的bug或者用户的复杂pc环境都会导致难以预料的崩溃。qt是一个1991年由qt company开发的跨平台c++图形用户界面应用程序开发框架。它既可以开发gui程序,也可用于开发非gui程序,比如控制台工具和服务器。qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(meta object compiler,moc))以及一些宏,qt很容易扩展,并且允许真正地组件编程。
[0003]
崩溃是一款软件产品最大最棘手的问题,目前很多公司都会在程序里增加日志和崩溃时生成dump文件来定位问题,这种技术方式排查解决问题效率较低,需要人工去分析日志以及需要工具去人为的调试dump文件,而且可能因为一些其它原因导致日志量巨大,文件数据丢失等造成无法排查问题。
[0004]
因此,现有技术还有待于改进和发展。


技术实现要素:

[0005]
鉴于上述现有技术的不足,本发明的目的在于提供一种客户端崩溃通知方法、装置及设备,旨在解决现有技术中客户端崩溃需要人工去分析日志,当日志量巨大时,排查难度大,排查时间长的技术问题。
[0006]
本发明的技术方案如下:
[0007]
一种客户端崩溃通知方法,所述方法包括:
[0008]
获取客户端对应的软件代码,在软件代码入口安装崩溃捕获代码;
[0009]
检测到客户端打包测试或版本发布指令,对客户端代码进行编译;将客户端编译生成的pdb文件上传至后台服务器;
[0010]
当监测到客户端崩溃时,根据崩溃捕获代码生成进程镜像文件,将进程镜像文件上传至后台服务器;
[0011]
根据进程镜像文件、编译文件及崩溃上报工具对崩溃原因进行分析,获取造成崩溃的崩溃信息,将所述崩溃信息发送至指定邮箱中。
[0012]
进一步地,所述获取客户端对应的软件代码,在软件代码入口安装崩溃捕获代码前,包括:
[0013]
预先将开发人员的邮箱设置为指定邮箱。
[0014]
进一步优选地,所述检测到客户端打包测试或版本发布指令时,对客户端代码进行编译;将客户端编译生成的pdb文件上传至后台服务器,包括:
[0015]
检测到客户端打包测试或版本发布指令,生成客户端对应的可执行程序文件;
[0016]
对可执行程序文件进行编译后生成pdb文件;
[0017]
将客户端编译生成的pdb文件上传至后台服务器。
[0018]
进一步优选地,所述当监测到客户端崩溃时,根据崩溃捕获代码生成进程镜像文件,将进程镜像文件上传至后台服务器,包括:
[0019]
当监测到客户端崩溃时,根据崩溃捕获代码生成dump文件;
[0020]
检测到将dump文件生成时,通过http接口将dump文件上传至后台服务器。
[0021]
优选地,所述当监测到客户端崩溃时,根据崩溃捕获代码生成进程镜像文件,将进程镜像文件上传至后台服务器前,还包括:
[0022]
预先对breakpad进行编译,将编译后的生成的可执行文件存入后台服务器。
[0023]
进一步地,所述根据进程镜像文件、编译文件及崩溃上报工具对崩溃原因进行分析,包括:
[0024]
根据dump文件、pdb文件及breakpad对应的可执行文件对崩溃原因进行分析,根据分析结果生成崩溃信息。
[0025]
进一步地,所述获取造成崩溃的崩溃信息,将所述崩溃信息发送至指定邮箱中,包括:
[0026]
获取造成崩溃的代码、当前线程、调用库及句柄,将造成崩溃的代码、当前线程、调用库及句柄发送至指定邮箱中。
[0027]
本发明的另一实施例提供了一种客户端崩溃通知设置,装置包括:
[0028]
崩溃捕获代码安装模块,用于获取客户端对应的软件代码,在软件代码入口安装崩溃捕获代码;
[0029]
编译与上传模块,用于检测到客户端打包测试或版本发布指令,对客户端代码进行编译;将客户端编译生成的pdb文件上传至后台服务器;
[0030]
镜像文件生成与上传模块,用于当监测到客户端崩溃时,根据崩溃捕获代码生成进程镜像文件,将进程镜像文件上传至后台服务器;
[0031]
崩溃信息分析与发送模块,用于根据进程镜像文件、编译文件及崩溃上报工具对崩溃原因进行分析,获取造成崩溃的崩溃信息,将所述崩溃信息发送至指定邮箱中。
[0032]
本发明的另一实施例提供了一种客户端崩溃通知设备,所述设备包括至少一个处理器;以及,
[0033]
与所述至少一个处理器通信连接的存储器;其中,
[0034]
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的客户端崩溃通知方法。
[0035]
本发明的另一实施例还提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的客户端崩溃通知方法。
[0036]
有益效果:本发明实施例在程序运行期间出现崩溃时,自动分析出软件崩溃的具体详细原因到实际代码,并且将具体造成崩溃的代码,当前线程,调用库,句柄等信息发送邮件到指定邮箱中,开发人员收到邮件时,能够马上定位问题以及解决问题。提高了软件开发的效率。
附图说明
[0037]
下面将结合附图及实施例对本发明作进一步说明,附图中:
[0038]
图1为本发明一种客户端崩溃通知方法较佳实施例的流程图;
[0039]
图2为本发明一种客户端崩溃通知装置的较佳实施例的功能模块示意图;
[0040]
图3为本发明一种客户端崩溃通知设备的较佳实施例的硬件结构示意图。
具体实施方式
[0041]
为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。以下结合附图对本发明实施例进行介绍。
[0042]
本发明实施例提供了一种客户端崩溃通知方法。请参阅图1,图1为本发明一种客户端崩溃通知方法较佳实施例的流程图。如图1所示,其包括步骤:
[0043]
步骤s100、获取客户端对应的软件代码,在软件代码入口安装崩溃捕获代码;
[0044]
步骤s200、检测到客户端打包测试或版本发布指令,对客户端代码进行编译;将客户端编译生成的pdb文件上传至后台服务器;
[0045]
步骤s300、当监测到客户端崩溃时,根据崩溃捕获代码生成进程镜像文件,将进程镜像文件上传至后台服务器;
[0046]
步骤s400、根据进程镜像文件、编译文件及崩溃上报工具对崩溃原因进行分析,获取造成崩溃的崩溃信息,将所述崩溃信息发送至指定邮箱中。
[0047]
具体实施时,在软件代码入口安装崩溃捕获代码,在崩溃时能够生产进程镜像文件,当有进程镜像文件生成时自动上传到后台服务器。在软件打包测试以及发版时,将编译生产的pdb文件上传到后台服务器。编译崩溃上报工具放到后台服务器,在后台使用python实现如下功能:当有进程镜像文件上传过来的时候,结合之前上传的.pdb文件再使用崩溃上报工具自动分析具体崩溃原因,得到造成崩溃的信息使用python实现的发邮件功能组织邮件自动发送之前指定邮箱中。
[0048]
本发明实施例在程序运行期间出现崩溃时,自动分析出软件崩溃的具体详细原因到实际代码,并且将具体造成崩溃的代码,当前线程,调用库,句柄等信息发送邮件到指定邮箱中,开发人员收到邮件时,能够马上定位问题以及解决问题,提高了软件开发的效率。
[0049]
进一步地,获取客户端对应的软件代码,在软件代码入口安装崩溃捕获代码前,包括:
[0050]
预先将开发人员的邮箱设置为指定邮箱。
[0051]
具体实施时,为了方便开发人员能及时获取崩溃原因,将开发人员的邮箱设置为指定邮箱。在分析出崩溃原因后,通过python实现的发邮件功能自动发送至开发人员邮箱。
[0052]
进一步地,检测到客户端打包测试或版本发布指令时,对客户端代码进行编译;将客户端编译生成的pdb文件上传至后台服务器,包括:
[0053]
检测到客户端打包测试或版本发布指令,生成客户端对应的可执行程序文件;
[0054]
对可执行程序文件进行编译后生成pdb文件;
[0055]
将客户端编译生成的pdb文件上传至后台服务器。
[0056]
具体实施时,在软件打包测试或发版时,将编译生产的.pdb文件上传到后台服务
器。客户端代码编译发版前生成可执行exe程序文件的同时,将生成.pdp文件上传到后台服务器,这两步是发版前期的准备工作。pdb(program database file,程序数据库文件)记录程序代码的程序数据库文件保存着调试和项目状态信息,使用这些信息可以对程序进行调试。
[0057]
进一步地,当监测到客户端崩溃时,根据崩溃捕获代码生成进程镜像文件,将进程镜像文件上传至后台服务器,包括:
[0058]
当监测到客户端崩溃时,根据崩溃捕获代码生成dump文件;
[0059]
检测到将dump文件生成时,通过http接口将dump文件上传至后台服务器。
[0060]
具体实施时,在软件代码入口安装崩溃捕获代码,在崩溃时能够生产dump文件,当有dump文件生成时自动通过http接口将dump文件上传到后台服务器。
[0061]
客户端代码增加捕获崩溃生成dump文件机制,为后期运行中出现崩溃准备。dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。dump文件是用来给程序编写人员调试程序用的,这种文件必须用专用工具软件打开,比如使用windbg打开。
[0062]
进一步地,当监测到客户端崩溃时,根据崩溃捕获代码生成进程镜像文件,将进程镜像文件上传至后台服务器前,还包括:
[0063]
预先对breakpad进行编译,将编译后的生成的可执行文件存入后台服务器。
[0064]
具体实施时,编译谷歌开源项目breakpad放到后台服务器,breakpad编译后生成了可执行文件放到后台服务器存储目录里,python应用联合dump和pdb执行breakpad程序解析出出错代码。
[0065]
在一些其他的实施例中,使用vs和windebug手动也可以解析出错代码。
[0066]
进一步地,根据进程镜像文件、编译文件及崩溃上报工具对崩溃原因进行分析,包括:
[0067]
根据dump文件、pdb文件及breakpad对应的可执行文件对崩溃原因进行分析,根据分析结果生成崩溃信息。
[0068]
具体实施时,后台使用python实现如下功能:当有dump上传过来的时候,结合之前上传的.pdb文件再使用breakpad自动分析具体崩溃原因,根据具体崩溃原因生成崩溃信息。
[0069]
进一步地,获取造成崩溃的崩溃信息,将所述崩溃信息发送至指定邮箱中,包括:
[0070]
获取造成崩溃的代码、当前线程、调用库及句柄,将造成崩溃的代码、当前线程、调用库及句柄发送至指定邮箱中。
[0071]
具体实施时,在得到造成崩溃的代码,当前线程,调用库,句柄等信息使用python实现的发邮件功能组织邮件自动发送之前设定的邮箱中。
[0072]
由以上方法实施例可知,本发明提供了一种客户端崩溃通知,客户端软件在运行期间出现崩溃自动生成dump文件,自动上传到后台服务器,后台服务器收到dump文件后结合python应用,调用breakpad结合.pdb和dump文件自动分析结果然后自动发送崩溃详细信息邮件到开发人员邮箱中。最终整个过程将实现自动化,开发人员能够在收到崩溃邮件时第一时间解决问题,大大提高了软件维护效率。
[0073]
需要说明的是,上述各步骤之间并不必然存在一定的先后顺序,本领域普通技术
人员,根据本发明实施例的描述可以理解,不同实施例中,上述各步骤可以有不同的执行顺序,亦即,可以并行执行,亦可以交换执行等等。
[0074]
本发明另一实施例提供一种客户端崩溃通知装置,如图2所示,装置1包括:
[0075]
崩溃捕获代码安装模块11,用于获取客户端对应的软件代码,在软件代码入口安装崩溃捕获代码;
[0076]
编译与上传模块12,用于检测到客户端打包测试或版本发布指令,对客户端代码进行编译;将客户端编译生成的pdb文件上传至后台服务器;
[0077]
镜像文件生成与上传模块13,用于当监测到客户端崩溃时,根据崩溃捕获代码生成进程镜像文件,将进程镜像文件上传至后台服务器;
[0078]
崩溃信息分析与发送模块14,用于根据进程镜像文件、编译文件及崩溃上报工具对崩溃原因进行分析,获取造成崩溃的崩溃信息,将所述崩溃信息发送至指定邮箱中。
[0079]
具体实施方式见方法实施例,此处不再赘述。
[0080]
本发明另一实施例提供一种客户端崩溃通知设备,如图3所示,设备10包括:
[0081]
一个或多个处理器110以及存储器120,图3中以一个处理器110为例进行介绍,处理器110和存储器120可以通过总线或者其他方式连接,图3中以通过总线连接为例。
[0082]
处理器110用于完成,设备10的各种控制逻辑,其可以为通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、单片机、arm(acorn risc machine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器110还可以是任何传统处理器、微处理器或状态机。处理器110也可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp核、或任何其它这种配置。
[0083]
存储器120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的客户端崩溃通知方法对应的程序指令。处理器110通过运行存储在存储器120中的非易失性软件程序、指令以及单元,从而执行设备10的各种功能应用以及数据处理,即实现上述方法实施例中的客户端崩溃通知方法。
[0084]
存储器120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需要的应用程序;存储数据区可存储根据设备10使用所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器120可选包括相对于处理器110远程设置的存储器,这些远程存储器可以通过网络连接至设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0085]
一个或者多个单元存储在存储器120中,当被一个或者多个处理器110执行时,执行上述任意方法实施例中的客户端崩溃通知方法,例如,执行以上描述的图1中的方法步骤s100至步骤s400。
[0086]
本发明实施例提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描述的图1中的方法步骤s100至步骤s400。
[0087]
作为示例,非易失性存储介质能够包括只读存储器(rom)、可编程rom(prom)、电可
编程rom(eprom)、电可擦rom(eeprom)或闪速存储器。易失性存储器能够包括作为外部高速缓存存储器的随机存取存储器(ram)。通过说明并非限制,ram可以以诸如同步ram(sram)、动态ram、(dram)、同步dram(sdram)、双数据速率sdram(ddr sdram)、增强型sdram(esdram)、synchlink dram(sldram)以及直接rambus(兰巴斯)ram(drram)之类的许多形式得到。本文中所描述的操作环境的所公开的存储器组件或存储器旨在包括这些和/或任何其他适合类型的存储器中的一个或多个。
[0088]
本发明的另一种实施例提供了一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使处理器执行上述方法实施例的客户端崩溃通知方法。例如,执行以上描述的图1中的方法步骤s100至步骤s400。
[0089]
以上所描述的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0090]
通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存在于计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行各个实施例或者实施例的某些部分的方法。
[0091]
除了其他之外,诸如"能够'、"能"、"可能"或"可以"之类的条件语言除非另外具体地陈述或者在如所使用的上下文内以其他方式理解,否则一般地旨在传达特定实施方式能包括(然而其他实施方式不包括)特定特征、元件和/或操作。因此,这样的条件语言一般地还旨在暗示特征、元件和/或操作对于一个或多个实施方式无论如何都是需要的或者一个或多个实施方式必须包括用于在有或没有输入或提示的情况下判定这些特征、元件和/或操作是否被包括或者将在任何特定实施方式中被执行的逻辑。
[0092]
已经在本文中在本说明书和附图中描述的内容包括能够提供客户端崩溃通知方法及装置的示例。当然,不能够出于描述本公开的各种特征的目的来描述元件和/或方法的每个可以想象的组合,但是可以认识到,所公开的特征的许多另外的组合和置换是可能的。因此,显而易见的是,在不脱离本公开的范围或精神的情况下能够对本公开做出各种修改。此外,或在替代方案中,本公开的其他实施例从对本说明书和附图的考虑以及如本文中所呈现的本公开的实践中可能是显而易见的。意图是,本说明书和附图中所提出的示例在所有方面被认为是说明性的而非限制性的。尽管在本文中采用了特定术语,但是它们在通用和描述性意义上被使用并且不用于限制的目的。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1