一种程序崩溃信息的收集方法及系统技术方案

技术编号:15639074 阅读:211 留言:0更新日期:2017-06-15 21:13
本发明专利技术涉及计算机应用技术领域,公开了一种程序崩溃信息的收集方法及系统。程序崩溃信息的收集方法包括:各应用服务分别加载监听接口,并对监听接口进行初始化;当监听接口监听到Native层崩溃时,进行崩溃信息收集;将收集到的崩溃信息存入指定路径,并上传至服务器;其中进行崩溃信息收集包括:收集Native层的崩溃日志;执行Shell命令,通知Java层出现Native崩溃;收集Native崩溃时的系统关键信息。本发明专利技术提供的程序崩溃信息的收集方法和系统,通过在各应用服务中分别加载监听接口,并对监听接口进行初始化,可实时监听Native层是否发生了崩溃,使得在发生程序崩溃时,能及时将进程跳转至崩溃信息收集进程,并进行崩溃信息的全面收集,方便开发者寻找崩溃原因。

【技术实现步骤摘要】
一种程序崩溃信息的收集方法及系统
本专利技术涉及计算机应用
,具体涉及一种程序崩溃信息的收集方法及系统。
技术介绍
Android(安卓)是一种基于Linux的自由及开放源代码的操作系统,主要用在移动设备上,如智能手机、平板电脑等。安卓系统由于其良好的开源特性,使得从事安卓应用程序开发的人员越来越多,进而也促使市面上出现了多版本的安卓系统和应用程序。众多的版本造成了系统的兼容性变差,使安卓系统的碎片化严重,常常出现应用程序崩溃的现象,有些严重的崩溃问题还发生在软件产品发布以后,使得用户体验变差。通过崩溃捕获和收集,可以收集到已发布应用的异常,以便开发人员发现和修改,这对于提高软件质量有着极大的帮助,因此,崩溃信息的收集变得非常重要。目前,常见的安卓系统崩溃有两类,一类是JavaException异常,一类是NativeSignal异常。现有技术中,能够对Java层的崩溃日志进行收集,但该部分信息还不足以分析出崩溃原因。目前对于Native层的崩溃信息的收集目前还没有很好的方法,只能通过logcat日志查看相关的堆栈信息,而logcat日志只起记录的作用,并不能在发生崩溃时通知系统,换句话说,在Native层发生崩溃时,除非程序员主动查看logcat日志,否则是不能知晓Native层是否已经崩溃及崩溃原因的。
技术实现思路
为解决现有技术中不能对Native层崩溃信息进行全面收集的缺陷,本专利技术提供一种程序崩溃信息的收集方法,包括:对各应用服务分别加载监听接口,并对所述监听接口进行初始化;所述监听接口用于监听Native层是否发生崩溃;当所述监听接口监听到Native层崩溃时,收集崩溃信息,具体包括:收集Native层的崩溃日志;执行Shell命令,通知Java层出现Native崩溃;收集Native崩溃时的系统关键信息;将收集到的所述崩溃信息存入指定路径,并上传至服务器。其中,所述系统关键信息包括崩溃时的内存运行数据、抓取的logcat日志、运行设备的信息、进程信息和应用程序基本信息。其中,还包括在所述收集崩溃信息以后,杀掉当前崩溃的进程。其中,所述初始化包括指定存储所述崩溃信息的路径及初始化Shell命令。本专利技术还提供一种程序崩溃信息的收集系统,包括:监听模块,用于对各应用服务分别加载监听接口,并对所述监听接口进行初始化,所述监听接口用于监听Native层是否发生崩溃;崩溃信息收集模块,用于在所述监听接口监听到Native层崩溃时,收集崩溃信息,具体包括:崩溃日志收集子模块,用于收集Native层的崩溃日志;通知子模块,用于执行Shell命令,通知Java层出现Native崩溃;系统关键信息收集子模块,用于收集Native崩溃时的系统关键信息;上传模块,用于将收集到的所述崩溃信息存入指定路径,并上传至服务器。其中,所述系统关键信息包括崩溃时的内存运行数据、抓取的logcat日志、运行设备的信息、进程信息和应用程序基本信息。其中,还包括删除模块,用于在所述崩溃信息收集模块收集崩溃信息以后,杀掉当前崩溃的进程。其中,还包括初始化模块,具体用于指定存储所述崩溃信息的路径及初始化Shell命令。本专利技术提供的一种程序崩溃信息的收集方法,通过在各应用服务中分别加载监听接口,并对监听接口进行初始化,可实时监听Native层是否发生了崩溃,使得在发生程序崩溃时,能及时将进程跳转至崩溃信息收集进程,并收集崩溃信息,方便程序开发人员找到程序崩溃的原因并解决崩溃问题。在崩溃信息收集过程中,首先对Native层的崩溃日志进行了收集,使得程序开发人员能及时获知发生Native崩溃的具体位置;通过执行Shell命令,通知Java层出现了Native崩溃,进而对崩溃时的系统关键信息进行了收集,使得收集到的崩溃信息更全面,方便程序开发者更及时、准确地解决崩溃问题。另外,本专利技术提供的一种程序崩溃信息的收集系统,通过设置监听模块并将其加载至应用服务,实现了监听Native层是否发生崩溃的目的,通过设置的崩溃信息收集模块,实现了Native层的崩溃日志及系统关键信息的全面收集,并通过上传模块将收集到的崩溃信息上传至服务器,使得程序开发人员能随时查看崩溃信息,及时对系统崩溃做出应对。附图说明图1为本专利技术中程序崩溃信息的收集方法的流程图;图2为本专利技术中程序崩溃信息的收集系统的示意图;图3为本专利技术中崩溃信息收集模块示意图;其中,1、监听模块;2、崩溃信息收集模块;3、上传模块;21、崩溃日志收集子模块;22、通知子模块;23、系统关键信息收集子模块。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。图1为本专利技术中程序崩溃信息的收集方法的流程图;图2为本专利技术中程序崩溃信息的收集系统的示意图。Android系统是一种自由及开放源代码的操作系统,基于Linux内核实现。Android系统使用Java语言进行开发,而Java无法直接访问到操作系统底层,如系统硬件等,为此Java使用Native代码来扩展Java程序的功能。由于Android的碎片化造成应用程序崩溃严重,会出现Java层和Native层崩溃。Android在发生Java崩溃时,通常通过Java的UncaughtExceptionHandler(未捕获的异常处理程序)来进行处理。但是Native代码只能开发so库(动态链接库),然后Java通过JNI(JavaNativeInterface,Java本地接口)来调用so库,如果Native出现了uncaughtexception(未捕获异常),引起so库崩溃,即发生Native崩溃,此时是无法通过Java的UncaughtExceptionHandler来处理的。熟悉Linux开发的人都知道,so库一般通过gcc/g++进行编译,崩溃时会产生信号异常。Android底层是Linux系统,所以so库崩溃时也会产生信号异常。那么如果我们能够捕获信号异常,就相当于捕获了Native崩溃信息。实施例1:如图1所示,本实施例提供一种程序崩溃信息的收集方法,用于收集Native崩溃信息,包括以下步骤:对各应用服务分别加载监听接口,并对所述监听接口进行初始化;监听接口用于监听Native层是否发生崩溃。具体地,首先对各应用服务分别加载监听接口。监听接口通常通过监听器实现,监听器是一个实现特定接口的普通Java程序,监听器用于监听另一个Java对象的方法调用或属性改变。每个监听接口内部包含了若干处理上述事件的抽象方法。通常每个应用服务都有一个监听接口与之相对应,每个接口还可以定义一个或多个方法。当特定的事件发生时,就会调用这些方法。例如当被监听对象发生方法调用或属性改变事件后,设定在监听接口中的特定方法将立即被执行。本专利技术中的监听接口用于监听Native层是否发生了崩溃。Linux存在一种信号机制,信号机制是Linux进程间通信的一种重要的方式,Linux信号一方面用于正常的任务调度和进程本文档来自技高网...
一种程序崩溃信息的收集方法及系统

【技术保护点】
一种程序崩溃信息的收集方法,其特征在于,包括:对各应用服务分别加载监听接口,并对所述监听接口进行初始化;所述监听接口用于监听Native层是否发生崩溃;当所述监听接口监听到Native层崩溃时,收集崩溃信息,具体包括:收集Native层的崩溃日志;执行Shell命令,通知Java层出现Native崩溃;收集Native崩溃时的系统关键信息;将收集到的所述崩溃信息存入指定路径,并上传至服务器。

【技术特征摘要】
1.一种程序崩溃信息的收集方法,其特征在于,包括:对各应用服务分别加载监听接口,并对所述监听接口进行初始化;所述监听接口用于监听Native层是否发生崩溃;当所述监听接口监听到Native层崩溃时,收集崩溃信息,具体包括:收集Native层的崩溃日志;执行Shell命令,通知Java层出现Native崩溃;收集Native崩溃时的系统关键信息;将收集到的所述崩溃信息存入指定路径,并上传至服务器。2.根据权利要求1所述的收集方法,其特征在于,所述系统关键信息包括崩溃时的内存运行数据、抓取的logcat日志、运行设备的信息、进程信息和应用程序基本信息。3.根据权利要求1所述的收集方法,其特征在于,还包括在所述收集崩溃信息以后,杀掉当前崩溃的进程。4.根据权利要求1-3任一项所述的收集方法,其特征在于,所述初始化包括指定存储所述崩溃信息的路径及初始化Shell命令。5.一种程序崩溃信息的收集系统,其特征在于,包括:监听模块,用于对各应用服务分别...

【专利技术属性】
技术研发人员:唐智慧雷宇
申请(专利权)人:北京智能管家科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1