CN106708643A - 异常信息处理方法及装置 - Google Patents

异常信息处理方法及装置 Download PDF

Info

Publication number
CN106708643A
CN106708643A CN201611001141.0A CN201611001141A CN106708643A CN 106708643 A CN106708643 A CN 106708643A CN 201611001141 A CN201611001141 A CN 201611001141A CN 106708643 A CN106708643 A CN 106708643A
Authority
CN
China
Prior art keywords
abnormal information
finger daemon
application program
server
operating system
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.)
Granted
Application number
CN201611001141.0A
Other languages
English (en)
Other versions
CN106708643B (zh
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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201611001141.0A priority Critical patent/CN106708643B/zh
Publication of CN106708643A publication Critical patent/CN106708643A/zh
Application granted granted Critical
Publication of CN106708643B publication Critical patent/CN106708643B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明的目的在于提供一种异常信息处理方法及装置,所述方法包括:在应用程序启动时,调用内核层为所述应用程序创建守护进程;在所述应用程序运行过程中,获取所述应用程序的异常信息,将所述异常信息发送至所述守护进程;通过所述守护进程将所述异常信息上传至服务器。通过本发明中的异常信息处理方法及装置,能够解决相关技术中在应用程序运行过程中,导致应用程序崩溃的异常信息很难被后端开发人员获取到的问题。

Description

异常信息处理方法及装置
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种异常信息处理方法及装置。
背景技术
在移动终端的应用程序开发过程中,不可避免的会在程序中引入或大或小的问题,如果这些问题在测试阶段没有被相应的测试人员发现,当应用程序发布到用户处后,用户在使用过程中可能遇到各种各样的问题,有些严重的问题可能导致程序或者系统崩溃。
相关技术中,应用程序大多配置有异常信息处理方法,应用程序发布到用户处后,应用程序在运行过程中依靠预先配置的异常信息处理方法收集异常信息,并对异常信息进行处理,如收集异常信息并发送至后端服务器等,然而,当应用程序在运行过程中出现比较严重的异常信息,导致应用程序崩溃时,由于应用程序崩溃,应用程序依靠预先配置的异常信息处理方法将无法收集异常信息,也无法对异常信息进行处理,如此下去,导致应用程序崩溃的异常信息很难被后端开发人员获取到,使得在应用程序的后续版本中很可能还存在同样的问题,极大降低用户的使用体验,为开发人员开发应用程序的后续版本带来不便。
针对上述提出的在应用程序运行过程中,导致应用程序崩溃的异常信息很难被后端开发人员获取到的问题,目前尚未提出有效的解决方案。
发明内容
有鉴于此,本发明的目的在于提供一种异常信息处理方法及装置,以解决相关技术中在应用程序运行过程中,导致应用程序崩溃的异常信息很难被后端开发人员获取到的问题。
第一方面,本发明实施例提供了一种异常信息处理方法,所述方法包括:在应用程序启动时,调用内核层为所述应用程序创建守护进程;在所述应用程序运行过程中,获取所述应用程序的异常信息,将所述异常信息发送至所述守护进程;通过所述守护进程将所述异常信息上传至服务器。
结合第一方面,本发明实施例提供了第一方面第一种可能的实施方式,其中,所述获取所述应用程序的异常信息,包括:通过预先创建的异常信息处理函数接收所述操作系统发送的异常信息,将所述操作系统发送的异常信息作为所述应用程序的异常信息。
结合第一方面,本发明实施例提供了第一方面第二种可能的实施方式,其中,所述将所述异常信息发送至所述守护进程,包括:根据所述应用程序与所述守护进程之间的进程间通信方式,将所述异常信息发送至所述守护进程。
结合第一方面第二种可能的实施方式,本发明实施例提供了第一方面第三种可能的实施方式,其中,所述操作系统为安卓系统,所述内核层为Linux系统,所述进程间通信方式为AIDL(Android Interface Definition Language)通信方式;或者,所述操作系统为IOS系统,所述内核层为Unix系统,所述进程间通信方式为Object-c通信方式。
结合第一方面,本发明实施例提供了第一方面第四种可能的实施方式,其中,通过所述守护进程将所述异常信息上传至服务器,包括:在所述守护进程和所述服务器均处于联网状态时,通过所述守护进程将所述异常信息上传至所述服务器;或者,通过所述守护进程将所述异常信息写入本地文件,在所述本地文件的大小达到预设阈值时,或者在当前时间达到预设时间时,通过所述守护进程将所述本地文件上传至所述服务器。
第二方面,本发明实施例提供了一种异常信息处理装置,所述装置包括:守护进程创建模块,用于在应用程序启动时,调用内核层为所述应用程序创建守护进程;异常信息转发模块,用于在所述应用程序运行过程中,获取所述应用程序的异常信息,将所述异常信息发送至所述守护进程;异常信息上报模块,用于通过所述守护进程将所述异常信息上传至服务器。
结合第二方面,本发明实施例提供了第二方面第一种可能的实施方式,其中,所述异常信息转发模块具体用于:通过预先创建的异常信息处理函数接收所述操作系统发送的异常信息,将所述操作系统发送的异常信息作为所述应用程序的异常信息。
结合第二方面,本发明实施例提供了第二方面第二种可能的实施方式,其中,所述异常信息转发模块具体用于:根据所述应用程序与所述守护进程之间的进程间通信方式,将所述异常信息发送至所述守护进程。
结合第二方面第二种可能的实施方式,本发明实施例提供了第二方面第三种可能的实施方式,其中,所述操作系统为安卓系统,所述内核层为Linux系统,所述进程间通信方式为AIDL通信方式;或者,所述操作系统为IOS系统,所述内核层为Unix系统,所述进程间通信方式为Object-c通信方式。
结合第二方面,本发明实施例提供了第二方面第四种可能的实施方式,其中,所述异常信息上报模块包括即时上报子模块或者记录上报子模块;所述即时上报子模块具体用于:在所述守护进程和所述服务器均处于联网状态时,通过所述守护进程将所述异常信息上传至所述服务器;所述记录上报子模块具体用于:通过所述守护进程将所述异常信息写入本地文件,在所述本地文件的大小达到预设阈值时,或者在当前时间达到预设时间时,通过所述守护进程将所述本地文件上传至所述服务器。
通过本发明实施例的方法及装置,在应用程序启动时,调用内核层为应用程序创建守护进程,在应用程序运行过程中,获取应用程序的异常信息,将异常信息发送至守护进程,通过守护进程将异常信息上传至服务器。由于应用程序出现异常信息后,将异常信息发送至守护进程,守护进程与应用程序属于两个独立的进程,即使应用程序异常退出,守护进程依然存活,因此通过守护进程能够将异常信息上传至服务器,从而使后端开发人员获取到致使应用改程序崩溃的异常信息,进而解决相关技术中在应用程序运行过程中,导致应用程序崩溃的异常信息很难被后端开发人员获取到的问题。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的异常信息处理方法的流程示意图;
图2为本发明实施例提供的移动终端的系统框架示意图;
图3为本发明实施例提供的守护进程的创建流程示意图;
图4为本发明实施例提供的异常信息处理装置的模块组成示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对相关技术在应用程序运行过程中,导致应用程序崩溃的异常信息很难被后端开发人员获取到的问题,本发明实施例提供了一种异常信息处理方法及装置,下面通过实施例进行具体描述。
图1为本发明实施例提供的异常信息处理方法的流程示意图,如图1所示,该方法包括以下步骤:
步骤S102,在应用程序启动时,调用内核层为应用程序创建守护进程。
本实施例中的应用程序为移动终端的应用程序,图2为本发明实施例提供的移动终端的系统框架示意图,如图2所示,移动终端的系统框架包括内核层、操作系统层和应用层,一种情况下,内核层为Linux内核,操作系统层为Android系统,另一种情况下,内核层为Unix内核,操作系统层为IOS系统,应用层运行有多个应用程序,也即多个应用进程。
考虑到应用程序出现异常信息时可能在短时间内崩溃,为了确保应用程序在崩溃前将异常信息传递出来,本实施例中需要创建守护进程,当应用程序出现异常时,将应用程序的异常信息交给守护进行处理。
本步骤中,在监测到移动终端内部的应用程序启动时,调用内核层的函数为应用程序创建守护进程,比如,移动终端调用Linux内核中的函数为应用程序创建守护进程,又如,移动终端调用Unix内核中的函数为应用程序创建守护进程。需要说明的是,由于该守护进程为调用内核层中的函数创建,因此该守护进程和应用程序属于不同的进程空间,应用程序崩溃或者退出时,对该守护进程无影响。
本发明实施例中,以Android系统为例详细说明如何调用内核层为应用程序创建守护进程。
由于Android系统本身的限制,Android系统无法主动创建一个新进程。在内核层,Linux系统提供了一个fork函数,fork函数主要功能是在内核层创建一个新的进程,因此本实施例通过内核层提供的fork函数创建一个新的进程,新的进程被创建出来后,即使创建进程被杀死,被创建的新的进程依旧可以存在并且一直被执行,该新的进程即为应用程序的守护进程。
当执行fork()函数后,会生成一个子进程,子进程的执行从fork()的返回值开始且代码继续往下执行,因此fork()执行一次后会有两次返回值,第一次为原来的进程,即父进程的返回值,表示新生成的子进程的进程id,第二次为子进程的起始执行,返回值为0,如果返回值非0,如-1,则表示创建子进程失败,可以通过errno定位失败原因。
需要说明的是,由于Linux内核是使用C语言进行编写的,Android系统为Java语言,Java和C通信需要通过JNI(Java Native Interface)技术来进行通信,因此利用JAVA调用C语言的fork函数的相关代码。
图3为本发明实施例提供的守护进程的创建流程示意图,如图3所示,该创建流程具体包括:
步骤S302,通过fork函数创建进程。
通过Linux内核提供的fork函数创建一个新的进程。Fork函数返回值是一个id,Fork函数返回两次返回值,第一次返回原来的父进程id,第二次返回子进程id。Fork函数开启的子进程id默认是0。
步骤S304,判断进程创建是否成功,若创建成功,则结束,否则,执行步骤S306,打印失败信息,并结束。
创建完子进程以后,通过id的返回值来判断进程是否是子进程。
a)如果id小于0,说明fork创建失败了,此时可以使用print函数将失败信息打印出来,print函数是C语言专门负责将信息输出到控制台的函数。
b)如果id大于0,说明此时返回的是父进程的id,为了调试方便,在父进程中输出父进程的id号,输出方式也是通过调用print函数来将父进程的id输出到控制台上。
c)如果id等于0,说明此时返回的是子进程,也即返回的是守护进程。
如果fork函数第一次返回的id大于0,第二次返回的id等于0,说明整个创建过程执行成功,如果其中任何一个id小于0则说明fork这个函数执行失败了,如果fork函数执行失败,将失败结果输出到控制台上。
步骤S104,在应用程序运行过程中,获取应用程序的异常信息,将异常信息发送至守护进程。
本实施例中获取应用程序的异常信息的具体过程为:通过预先创建的异常信息处理函数接收操作系统发送的异常信息,将操作系统发送的异常信息作为应用程序的异常信息。
应用程序运行过程中,不停的调用操作系统的函数进行运算,并将运算结果返回至操作系统,当操作系统检测接收到的运算结果为异常时,确定应用程序发出了异常信息,操作系统将该异常信息传递至本实施例中预先创建的异常信息处理函数,本实施例中,通过预先创建的异常信息处理函数接收操作系统发送的异常信息,将操作系统发送的异常信息作为应用程序的异常信息。
通过预先创建的异常信息处理函数获取到应用程序的异常信息后,还将异常信息发送至守护进程,从而使守护进程处理异常信息。其中,将异常信息发送至守护进程具体方式为:根据应用程序与守护进程之间的进程间通信方式,将异常信息发送至守护进程。
通常情况下,应用程序的编程语言与守护进程的编程语言不同,比如,操作系统为Android系统时,应用程序的编程语言为Java,守护进程的编程语言为C语言,因此需要确定应用程序与守护进程之间的进程间通信方式,然后根据进程间通信方式将异常信息发送至守护进程。
一种情况下,操作系统为安卓系统,内核层为Linux系统,进程间通信方式为AIDL通信方式,另一种情况下,操作系统为IOS系统,内核层为Unix系统,进程间通信方式为Object-c通信方式。
本发明实施例中,以Android系统为例详细说明如何获取应用程序的异常信息以及如何将异常信息发送至守护进程。
这里首先对Android系统中经常涉及的异常信息进行分类,Android系统中常见的异常信息分为以下这些类型。
1)java.lang.NullPointerException
具体含义是“程序遇上了空指针”,简单而言就是调用了未经初始化的对象或者是不存在的对象,即混淆了数组的初始化和数组元素的初始化。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以如果需要调用每个元素,还需要对每个元素都进行初始化。
2)java.lang.ClassNotFoundException
具体含义是“指定的类不存在”。
3)java.lang.ArithmeticException
具体含义是“数学运算异常”,比如程序中出现了除以零这样的运算等。
4)java.lang.ArrayIndexOutOfBoundsException
具体含义是“数组下标越界”,目前程序中大多都有对数组的操作,因此在调用数组时需要保证调用的下标不能超过数组的范围,当调用的下标超过数组的范围时,将会出现该异常信息。
5)java.lang.IllegalArgumentException
具体含义是“方法的参数错误”,比如某方法的参数超过预定的参数范围,将会出现该异常。
6)java.lang.IllegalAccessException
具体含义是“没有访问权限”,当应用程序要调用某个类,但当前的方法没有对该类的访问权限时便会出现该异常。
在Android系统中,通过如下方式获取应用程序的异常信息。
在Android中系统提供有默认的异常处理类UncaughtExceptionHandler,当不对异常信息做任何处理的时候,操作系统默认让异常处理类UncaughtExceptionHandler处理所有的异常信息。然而,该异常处理类在获取到异常信息后,无法将异常信息发送至守护进程,因此本实施例中自定义一个异常处理类MyExceptionHandler来继承系统提供的UncaughtExceptionHandler类,通过自定义的异常处理类MyExceptionHandler获取异常信息并将异常信息发送至守护进程。由于自定义的异常处理类MyExceptionHandler继承了异常处理类UncaughtExceptionHandler的全部内容,因此自定义的异常处理类MyExceptionHandler具有异常处理类UncaughtExceptionHandler的全部功能。自定义异常处理类MyExceptionHandler后,需要重写其中的处理函数,从而实现对异常信息的处理。
自定义异常处理类MyExceptionHandler后,需要在操作系统中注册该类,从而告诉操作系统收到异常信息后都交给MyExceptionHandler这个异常处理类来进行处理。具体地,使用Thread.setDefaultUncaughtExceptionHandler(this)这个方法在操作系统中注册异常处理类MyExceptionHandler,其中this表示就是MyExceptionHandler这个类。通过setDefaultUncaughtExceptionHandler这个函数可以告诉操作系统后续应用程序出现异常信息时,将所有异常信息全部都交给MyExceptionHandler这个类来进行处理。
由于操作系统默认情况下将所有异常信息都传递到uncaughtException这个函数中的,因此为了使自定义的MyExceptionHandler类能够处理异常信息,还需要在该类中重写uncaughtException这个方法,从而使操作系统将异常信息传递到uncaughtException这个方法中。
上述自定义的异常信息处理类MyExceptionHandler可以看做前述的预先创建的异常信息处理函数,在自定义的异常信息处理类MyExceptionHandler创建注册成功后,操作系统获取到应用程序的异常信息时,会将异常信息自动传递至MyExceptionHandler中,从而获取到应用程序的异常信息。
自定义的异常处理类MyExceptionHandler接收到异常信息后,需要将异常信息传递到守护进程中。不同进程间进行通信是通过IPC(Inter-Process Communication)来实现的。Android系统中能够进行IPC通信的方式有广播通信、AIDL通信、ContentProvider通信三种。本实施例中,优选AIDL通信进行异常信息的传递,自定义的异常处理类MyExceptionHandler采用AIDL通信方式将异常信息传递至守护进程。AIDL通信方式具体的通信函数为:Void sendException(String msg)。
在AIDL通信过程中,当自定义的异常处理类MyExceptionHandler接收到操作系统传递过来的异常信息后,通过定义好的接口函数sendException将异常信息发送给守护进程。在发送命令之前守护进程(也即子进程)需要和主进程(也即父进程)之间建立联系,只有建立了联系才能够通过定义好的接口sendException进行进程间通信。建立联系的方法也很简单,在守护进程中通过调用bindService函数,将子进程和主进程bind(“绑定”)在一起,通过bindService的处理后,主进程就能够通过定义好的sendException接口来将异常信息传递给子进程了。
总结,异常信息的总体流程为:应用程序不停调用操作系统的函数进行运算,并返回运算结果,当操作系统检测发现运算结果异常时,确定接收到应用程序的异常信息,将该异常信息传递至自定义的异常处理类MyExceptionHandler(既预先创建的异常信息处理函数),自定义的异常处理类MyExceptionHandler通过AIDL通信方式将接收到的异常信息传递至守护进程。
本实施例中,在将异常信息发送至守护进程后,还需要执行步骤S106。
步骤S106,通过守护进程将异常信息上传至服务器。
接收到异常信息后,通过守护进程将异常信息上传至服务器。具体地,在守护进程和服务器均处于联网状态时,通过守护进程将异常信息上传至服务器;或者,通过守护进程将异常信息写入本地文件,在本地文件的大小达到预设阈值时,或者在当前时间达到预设时间时,通过守护进程将本地文件上传至服务器,其中,本地文件为移动终端上的文件。
本发明实施例中,以Android系统为例详细说明守护进程如何将异常信息上传至服务器。
需要说明的是,守护进程与应用程序是独立的进程,守护进程对于异常信息的处理与应用程序没有任何关系,也不会对应用程序造成任何影响。
一种情况下,在守护进程和服务器均处于联网状态时,守护进程将异常信息直接上传至服务器,另一种情况下,守护进程将异常信息写入本地文件,在本地文件的大小达到预设阈值时,将本地文件上传至服务器。
守护进程将异常信息写入本地文件的具体过程为:
1)打开或创建文件
当守护进程接收到异常信息后,主动在移动终端的存储空间上打开或者创建一个异常信息的文件exceptionFile,其中,如果发现exceptionFile文件不存在的时候是创建,如果exceptionFile文件存在则直接打开。
2)将异常信息写入文件
异常信息写入方式大体分为2种类型,其一,覆盖写入,此种方式无论文件中是否有内容都是从文件的最开始的地方进行写入,如果文件中原本是有内容的,新写入的内容会覆盖原来的文件信息,其二,追加写入,这种写入模式会在写入前查看文件中是否有内容,如果文件中没有内容就直接开始写入数据。如果文件中有内容,则将文件指针偏移到文件内容的末尾然后再开始写入内容,这样就能够保证每次写入文件的地方都是在文件的末尾,也就实现了文件追加写入的目的。
优选地,为了能够保存多次写入的异常数据,采用追加写入的方式来对文件进行写入操作的。使用追加方案的实现很简单,只需要在文件打开的时候添加上最佳写入的标志位即可,后续在将数据写入文件的时候守护进程就会将数据按照追加的模式写入文件了。
3)检测文件大小
文件写入完成以后,守护进程主动检查文件大小。在C语言中检测文件大小的方法如下:打开文件,将文件指针偏移到文件末尾,具体方法是通过调用fseek函数,通过这个函数将文件指针指向文件的末尾处,根据当前文件的指针位置来获取文件的大小信息,具体是调用ftell(fp)函数,这个函数能够通过当前文件的指针偏移量来获取到当前文件的大小信息。
检测到文件的大小信息大于或等于阈值的时候,守护进程通过http协议中的post方法将该文件上传到服务器,如果检测到文件的大小小于阈值的时候,不做上传操作。
考虑到如果文件过大会导致上传失败的概率,同时进行上传的时候也会耗费更多的流量信息,同时文件过大也会降低上传的频繁程度,导致异常信息处理的及时性,一种具体的实施方式下,文件大小的阈值设置为1M,也就是当文件大于或等于1M的时候就开始进行上传操作。
本发明实施例中,在应用程序启动时,调用内核层为应用程序创建守护进程,在应用程序运行过程中,获取应用程序的异常信息,将异常信息发送至守护进程,通过守护进程将异常信息上传至服务器。由于应用程序出现异常信息后,将异常信息发送至守护进程,守护进程与应用程序属于两个独立的进程,即使应用程序异常退出,守护进程依然存活,因此通过守护进程能够将异常信息上传至服务器,从而使后端开发人员获取到致使应用改程序崩溃的异常信息,进而解决相关技术中在应用程序运行过程中,导致应用程序崩溃的异常信息很难被后端开发人员获取到的问题。
通过本发明实施例中的方法,通过fork函数创建守护进程,可以保证在主进程不存在的情况下守护进行依然存活,依旧能够处理异常信息的写入和上传操作。通过本发明实施例中的方法,能够在第一时间将应用程序的异常信息上传至服务器,方便后续开发者从捕获的异常信息中找到对应的解决方案。
对应上述的异常信息处理方法,本发明实施例还提供了一种异常信息处理装置,如图4所示,该装置包括:守护进程创建模块41,用于在应用程序启动时,调用内核层为应用程序创建守护进程;异常信息转发模块42,用于在应用程序运行过程中,获取应用程序的异常信息,将异常信息发送至守护进程;异常信息上报模块43,用于通过守护进程将异常信息上传至服务器。
一方面,异常信息转发模块42具体用于:通过预先创建的异常信息处理函数接收操作系统发送的异常信息,将操作系统发送的异常信息作为应用程序的异常信息。
另一方面,异常信息转发模块42具体用于:根据应用程序与守护进程之间的进程间通信方式,将异常信息发送至守护进程。
一种情况下,操作系统为安卓系统,内核层为Linux系统,进程间通信方式为AIDL通信方式;另一种情况下,操作系统为IOS系统,内核层为Unix系统,进程间通信方式为Object-c通信方式。
进一步地,异常信息上报模块43包括即时上报子模块或者记录上报子模块;即时上报子模块具体用于:在守护进程和服务器均处于联网状态时,通过守护进程将异常信息上传至服务器;记录上报子模块具体用于:通过守护进程将异常信息写入本地文件,在本地文件的大小达到预设阈值时,或者在当前时间达到预设时间时,通过守护进程将本地文件上传至服务器。
通过本发明实施例的装置,在应用程序启动时,调用内核层为应用程序创建守护进程,在应用程序运行过程中,获取应用程序的异常信息,将异常信息发送至守护进程,通过守护进程将异常信息上传至服务器。由于应用程序出现异常信息后,将异常信息发送至守护进程,守护进程与应用程序属于两个独立的进程,即使应用程序异常退出,守护进程依然存活,因此通过守护进程能够将异常信息上传至服务器,从而使后端开发人员获取到致使应用改程序崩溃的异常信息,进而解决相关技术中在应用程序运行过程中,导致应用程序崩溃的异常信息很难被后端开发人员获取到的问题。
本发明实施例所提供的装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种异常信息处理方法,其特征在于,所述方法包括:
在应用程序启动时,调用内核层为所述应用程序创建守护进程;
在所述应用程序运行过程中,获取所述应用程序的异常信息,将所述异常信息发送至所述守护进程;
通过所述守护进程将所述异常信息上传至服务器。
2.根据权利要求1所述的方法,其特征在于,所述获取所述应用程序的异常信息,包括:
通过预先创建的异常信息处理函数接收所述操作系统发送的异常信息,将所述操作系统发送的异常信息作为所述应用程序的异常信息。
3.根据权利要求1所述的方法,其特征在于,所述将所述异常信息发送至所述守护进程,包括:
根据所述应用程序与所述守护进程之间的进程间通信方式,将所述异常信息发送至所述守护进程。
4.根据权利要求3所述的方法,其特征在于,所述操作系统为安卓系统,所述内核层为Linux系统,所述进程间通信方式为AIDL通信方式;
或者,
所述操作系统为IOS系统,所述内核层为Unix系统,所述进程间通信方式为Object-c通信方式。
5.根据权利要求1所述的方法,其特征在于,通过所述守护进程将所述异常信息上传至服务器,包括:
在所述守护进程和所述服务器均处于联网状态时,通过所述守护进程将所述异常信息上传至所述服务器;或者,
通过所述守护进程将所述异常信息写入本地文件,在所述本地文件的大小达到预设阈值时,或者在当前时间达到预设时间时,通过所述守护进程将所述本地文件上传至所述服务器。
6.一种异常信息处理装置,其特征在于,所述装置包括:
守护进程创建模块,用于在应用程序启动时,调用内核层为所述应用程序创建守护进程;
异常信息转发模块,用于在所述应用程序运行过程中,获取所述应用程序的异常信息,将所述异常信息发送至所述守护进程;
异常信息上报模块,用于通过所述守护进程将所述异常信息上传至服务器。
7.根据权利要求6所述的装置,其特征在于,所述异常信息转发模块具体用于:
通过预先创建的异常信息处理函数接收所述操作系统发送的异常信息,将所述操作系统发送的异常信息作为所述应用程序的异常信息。
8.根据权利要求6所述的装置,其特征在于,所述异常信息转发模块具体用于:
根据所述应用程序与所述守护进程之间的进程间通信方式,将所述异常信息发送至所述守护进程。
9.根据权利要求8所述的装置,其特征在于,所述操作系统为安卓系统,所述内核层为Linux系统,所述进程间通信方式为AIDL通信方式;
或者,
所述操作系统为IOS系统,所述内核层为Unix系统,所述进程间通信方式为Object-c通信方式。
10.根据权利要求6所述的装置,其特征在于,所述异常信息上报模块包括即时上报子模块或者记录上报子模块;
所述即时上报子模块具体用于:在所述守护进程和所述服务器均处于联网状态时,通过所述守护进程将所述异常信息上传至所述服务器;
所述记录上报子模块具体用于:通过所述守护进程将所述异常信息写入本地文件,在所述本地文件的大小达到预设阈值时,或者在当前时间达到预设时间时,通过所述守护进程将所述本地文件上传至所述服务器。
CN201611001141.0A 2016-11-14 2016-11-14 异常信息处理方法及装置 Active CN106708643B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611001141.0A CN106708643B (zh) 2016-11-14 2016-11-14 异常信息处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611001141.0A CN106708643B (zh) 2016-11-14 2016-11-14 异常信息处理方法及装置

Publications (2)

Publication Number Publication Date
CN106708643A true CN106708643A (zh) 2017-05-24
CN106708643B CN106708643B (zh) 2020-05-12

Family

ID=58940869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611001141.0A Active CN106708643B (zh) 2016-11-14 2016-11-14 异常信息处理方法及装置

Country Status (1)

Country Link
CN (1) CN106708643B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107517245A (zh) * 2017-07-10 2017-12-26 电子科技大学 一种基于静态分析的移动安全沙箱设计
CN107943657A (zh) * 2017-11-24 2018-04-20 郑州云海信息技术有限公司 一种Linux系统问题自动分析方法及系统
CN108287769A (zh) * 2018-02-28 2018-07-17 腾讯科技(深圳)有限公司 一种信息处理方法及装置
CN108984203A (zh) * 2018-06-08 2018-12-11 广东伊莱特电器有限公司 一种用于Android应用运行时数据采集的方法及其系统
CN110308943A (zh) * 2018-03-20 2019-10-08 腾讯科技(深圳)有限公司 程序运行方法、装置、计算设备以及存储介质
CN110362418A (zh) * 2019-07-09 2019-10-22 腾讯科技(深圳)有限公司 一种异常数据恢复方法、装置、服务器及存储介质
CN110457871A (zh) * 2019-08-13 2019-11-15 杭州安恒信息技术股份有限公司 一种基于文件过滤驱动框架的守护进程方法和装置
CN110502440A (zh) * 2019-08-09 2019-11-26 北京达佳互联信息技术有限公司 调试定位信息的获取方法、装置、电子设备及存储介质
CN111064590A (zh) * 2018-10-16 2020-04-24 腾讯科技(深圳)有限公司 异常状态的修复方法、装置及可读存储介质
CN111414229A (zh) * 2020-03-09 2020-07-14 网宿科技股份有限公司 一种应用容器异常处理方法及装置
CN111694684A (zh) * 2019-03-15 2020-09-22 百度在线网络技术(北京)有限公司 存储设备的异常构造方法、装置、电子设备及存储介质
CN112286773A (zh) * 2020-10-19 2021-01-29 北京字节跳动网络技术有限公司 一种崩溃信息的收集方法、装置、介质和电子设备
CN112395106A (zh) * 2020-11-17 2021-02-23 努比亚技术有限公司 进程管理方法、移动终端以及计算机可读存储介质
CN112559235A (zh) * 2020-12-18 2021-03-26 惠州Tcl移动通信有限公司 一种安卓线程异常处理方法、终端及计算机可读存储介质
CN113032183A (zh) * 2021-03-24 2021-06-25 西安闻泰信息技术有限公司 系统管理方法、装置、计算机设备和存储介质
CN113434362A (zh) * 2021-06-24 2021-09-24 广州欢网科技有限责任公司 Android程序发生异常时自动预警的方法及装置
CN114756400A (zh) * 2022-06-15 2022-07-15 四川新网银行股份有限公司 一种基于安卓系统的应用程序异常处理方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030154288A1 (en) * 2002-02-14 2003-08-14 Hitachi, Ltd. Server-client system and data transfer method used in the same system
CN103297279A (zh) * 2013-06-20 2013-09-11 烽火通信科技股份有限公司 一种多软件进程系统上软件控制的主备单盘倒换方法
CN105630659A (zh) * 2015-12-23 2016-06-01 北京奇虎科技有限公司 应用崩溃日志的获取方法及装置
CN105653432A (zh) * 2015-12-22 2016-06-08 北京奇虎科技有限公司 一种崩溃数据的处理方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030154288A1 (en) * 2002-02-14 2003-08-14 Hitachi, Ltd. Server-client system and data transfer method used in the same system
CN103297279A (zh) * 2013-06-20 2013-09-11 烽火通信科技股份有限公司 一种多软件进程系统上软件控制的主备单盘倒换方法
CN105653432A (zh) * 2015-12-22 2016-06-08 北京奇虎科技有限公司 一种崩溃数据的处理方法和装置
CN105630659A (zh) * 2015-12-23 2016-06-01 北京奇虎科技有限公司 应用崩溃日志的获取方法及装置

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107517245A (zh) * 2017-07-10 2017-12-26 电子科技大学 一种基于静态分析的移动安全沙箱设计
CN107943657A (zh) * 2017-11-24 2018-04-20 郑州云海信息技术有限公司 一种Linux系统问题自动分析方法及系统
CN108287769A (zh) * 2018-02-28 2018-07-17 腾讯科技(深圳)有限公司 一种信息处理方法及装置
CN108287769B (zh) * 2018-02-28 2021-07-02 腾讯科技(深圳)有限公司 一种信息处理方法及装置
CN110308943A (zh) * 2018-03-20 2019-10-08 腾讯科技(深圳)有限公司 程序运行方法、装置、计算设备以及存储介质
CN110308943B (zh) * 2018-03-20 2021-10-19 腾讯科技(深圳)有限公司 程序运行方法、装置、计算设备以及存储介质
CN108984203A (zh) * 2018-06-08 2018-12-11 广东伊莱特电器有限公司 一种用于Android应用运行时数据采集的方法及其系统
CN111064590A (zh) * 2018-10-16 2020-04-24 腾讯科技(深圳)有限公司 异常状态的修复方法、装置及可读存储介质
CN111064590B (zh) * 2018-10-16 2021-12-14 腾讯科技(深圳)有限公司 异常状态的修复方法、装置及可读存储介质
CN111694684B (zh) * 2019-03-15 2023-07-04 百度在线网络技术(北京)有限公司 存储设备的异常构造方法、装置、电子设备及存储介质
CN111694684A (zh) * 2019-03-15 2020-09-22 百度在线网络技术(北京)有限公司 存储设备的异常构造方法、装置、电子设备及存储介质
CN110362418B (zh) * 2019-07-09 2022-02-18 腾讯科技(深圳)有限公司 一种异常数据恢复方法、装置、服务器及存储介质
CN110362418A (zh) * 2019-07-09 2019-10-22 腾讯科技(深圳)有限公司 一种异常数据恢复方法、装置、服务器及存储介质
CN110502440A (zh) * 2019-08-09 2019-11-26 北京达佳互联信息技术有限公司 调试定位信息的获取方法、装置、电子设备及存储介质
CN110457871A (zh) * 2019-08-13 2019-11-15 杭州安恒信息技术股份有限公司 一种基于文件过滤驱动框架的守护进程方法和装置
CN111414229A (zh) * 2020-03-09 2020-07-14 网宿科技股份有限公司 一种应用容器异常处理方法及装置
CN111414229B (zh) * 2020-03-09 2023-08-18 网宿科技股份有限公司 一种应用容器异常处理方法及装置
CN112286773A (zh) * 2020-10-19 2021-01-29 北京字节跳动网络技术有限公司 一种崩溃信息的收集方法、装置、介质和电子设备
CN112395106A (zh) * 2020-11-17 2021-02-23 努比亚技术有限公司 进程管理方法、移动终端以及计算机可读存储介质
CN112559235A (zh) * 2020-12-18 2021-03-26 惠州Tcl移动通信有限公司 一种安卓线程异常处理方法、终端及计算机可读存储介质
CN113032183A (zh) * 2021-03-24 2021-06-25 西安闻泰信息技术有限公司 系统管理方法、装置、计算机设备和存储介质
CN113434362A (zh) * 2021-06-24 2021-09-24 广州欢网科技有限责任公司 Android程序发生异常时自动预警的方法及装置
CN114756400A (zh) * 2022-06-15 2022-07-15 四川新网银行股份有限公司 一种基于安卓系统的应用程序异常处理方法及系统
CN114756400B (zh) * 2022-06-15 2022-08-26 四川新网银行股份有限公司 一种基于安卓系统的应用程序异常处理方法及系统

Also Published As

Publication number Publication date
CN106708643B (zh) 2020-05-12

Similar Documents

Publication Publication Date Title
CN106708643A (zh) 异常信息处理方法及装置
US9210040B2 (en) Apparatus and methods for cognitive containters to optimize managed computations and computing resources
EP3288239B1 (en) Service availability management method and apparatus, and network function virtualization infrastructure thereof
US7934129B2 (en) Network hang recovery
US10031750B2 (en) Apparatus and methods for cognitive containters to optimize managed computations and computing resources
CN106502747A (zh) 一种应用升级的方法及移动终端
CN108762956B (zh) 获取Native本地数据的方法、服务器、移动终端及存储介质
CN114254304A (zh) 容器安全入侵检测方法、装置、计算机设备及存储介质
CN109284147A (zh) 一种插件适配方法和装置
CN109739619A (zh) 一种基于容器化应用的处理方法、装置及存储介质
CN108170609A (zh) 程序漏洞的定位方法、装置、计算机设备及可读存储介质
CN107145399B (zh) 一种共享内存管理方法及共享内存管理设备
US11106516B2 (en) Selective service-specific controls in a virtualized container environment
CN113360379B (zh) 程序测试环境创建方法和程序测试环境创建装置
WO2024032209A1 (zh) 区块链交易验证方法、装置、存储介质及电子设备
CN110362416A (zh) 页面组件加载方法及装置、电子设备、存储介质
CN106330595B (zh) 分布式平台的心跳检测方法和装置
CN110502890B (zh) 一种验证码的处理方法、装置、电子设备及存储介质
CN107315677B (zh) 判断应用程序发生异常的方法及装置
CN107122138A (zh) 一种配置磁盘阵列的设备及方法
CN109062580B (zh) 一种虚拟化环境部署方法和部署装置
CN105912417A (zh) 虚拟系统的检测方法和相关软件运行方法以及相关装置
CN114281473A (zh) 云平台测试环境管理方法、系统、终端及存储介质
CN114510751A (zh) 一种基于处理器安全核的硬件防替换装置和方法
CN112114931B (zh) 深度学习程序配置方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant