CN106598770B - Android***中Native层异常上报处理方法及装置 - Google Patents

Android***中Native层异常上报处理方法及装置 Download PDF

Info

Publication number
CN106598770B
CN106598770B CN201611179578.3A CN201611179578A CN106598770B CN 106598770 B CN106598770 B CN 106598770B CN 201611179578 A CN201611179578 A CN 201611179578A CN 106598770 B CN106598770 B CN 106598770B
Authority
CN
China
Prior art keywords
exception
native layer
layer
information
native
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.)
Active
Application number
CN201611179578.3A
Other languages
English (en)
Other versions
CN106598770A (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.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo 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 Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201611179578.3A priority Critical patent/CN106598770B/zh
Publication of CN106598770A publication Critical patent/CN106598770A/zh
Application granted granted Critical
Publication of CN106598770B publication Critical patent/CN106598770B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error 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 the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • G06F11/0742Error 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 the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function in a data processing system embedded in a mobile device, e.g. mobile phones, handheld devices
    • 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
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种Android***中Native层异常上报处理方法及装置,其中的方法包括:对Native层异常上报事件进行监听,其中,所述Native层异常上报事件是指Native层向***服务上报异常信息的事件;当监听到Native层异常上报事件时,截获异常信息;将捕获的异常信息提供给Java层,由所述Java层解析所述异常信息并分析异常原因。本发明可使Java层及时获得Native层异常信息,从而提高异常处理效率。

Description

Android***中Native层异常上报处理方法及装置
技术领域
本发明涉及计算机技术领域,具体涉及一种Android***中Native层异常上报处理方法及装置。
背景技术
Android操作***是一种以Linux为基础的操作***,主要用于便携设备。Android***中上层应用的开发一般基于Java完成。Java是平台无关的,因为有些底层的任务用Java实现起来并不容易,例如,当涉及本地服务、链接库或硬件驱动等方面的任务时,通常需要允许C程序来实现,而C程序运行在Native(本地方法)层。
在Native层运行过程中,难免会出现异常,例如Native崩溃(Native Crash),当Native层出现异常时,目前Android***的上报机制是,Native层将异常信息上报给***的关键服务,而这种上报机制不利于开发人员及时对问题进行分析。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种Android***中Native层异常上报处理方法及装置。
依据本发明的一个方面,提供一种Android***中Native层异常上报处理方法,包括:对Native层异常上报事件进行监听,其中,所述Native层异常上报事件是指Native层向***服务上报异常信息的事件;当监听到Native层异常上报事件时,截获异常信息;将捕获的异常信息提供给Java层,由所述Java层解析所述异常信息并分析异常原因。
可选的,在监听到Native层异常上报事件后,采用hook机制中断执行Native层异常上报事件的过程,利用异常交互接口将Native层异常上报事件中的异常信息发送给Java层,其中,所述Java层预先注册所述异常交互接口。
可选的,所述对Native层异常上报事件进行监听,包括:在Native层设置并启动Native层异常***;通过所述Native层异常***,监听是否发起了Native层异常上报连接,如果是,确定监听到Native层异常上报事件。
可选的,还包括:在所述Native层设置异常中断服务,在所述Java层设置异常处理服务,其中,使所述异常处理服务预先在所述Native层异常***中进行注册;
可选的,所述将捕获的异常信息提供给Java层包括:当所述Native层异常***监听到Native层异常事件后,所述异常中断服务调用所述异常交互接口将异常信息发送给所述异常处理服务。
可选的,在所述将捕获的异常信息提供给Java层之后,还包括:继续执行原Native层异常上报事件,将异常信息发送给所述***服务。
可选的,所述异常信息包括Native层崩溃的函数栈信息。
依据本发明的另一个方面,提供一种Android***中Native层异常上报处理装置,包括:监听单元,用于对Native层异常上报事件进行监听,其中,所述Native层异常上报事件是指Native层向***服务上报异常信息的事件;截获单元,用于当监听到Native层异常上报事件时,截获异常信息;提供单元,用于将捕获的异常信息提供给Java层,由所述Java层解析所述异常信息并分析异常原因。
可选的,所述监听单元在监听到Native层异常上报事件后,所述截获单元采用hook机制中断执行Native层异常上报事件的过程,所述提供单元利用异常交互接口将Native层异常上报事件中的异常信息发送给Java层,其中,所述Java层预先注册所述异常交互接口。
可选的,所述监听单元具体用于:在Native层设置并启动Native层异常***;通过所述Native层异常***,监听是否发起了Native层异常上报连接,如果是,确定监听到Native层异常上报事件。
可选的,在所述Native层设置异常中断服务,在所述Java层设置异常处理服务,其中,使所述异常处理服务预先在所述Native层异常***中进行注册;所述提供单元具体用于:当所述Native层异常***监听到Native层异常事件后,所述异常中断服务调用所述异常交互接口将异常信息发送给所述异常处理服务。
可选的,还包括:上报执行单元,用于继续执行原Native层异常上报事件,将异常信息发送给所述***服务。
可选的,所述异常信息包括Native层崩溃的函数栈信息。
可见,由于本发明在监听到Native层异常上报事件后,不是直接执行上报事件,而是截获异常信息,并提供给Java层。由此,避免了开发人员在Java层无法获知Native层异常信息的问题。相比于原Native层异常上报事件的处理方式,由于可在Java层实时获知异常信息,对异常信息进行分析,可提高异常处理的效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的Android***中Native层异常上报处理方法流程图;
图2示出了根据本发明一个实施例的Android***中Native层异常上报处理方法实例示意图;以及
图3示出了根据本发明一个实施例的Android***中Native层异常上报处理装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如前所述的,在Native层运行过程中,难免会出现异常,例如Native崩溃(NativeCrash),当Native层出现异常时,目前Android***的上报机制是,Native层将异常信息上报给***的关键服务,而这种上报机制不利于开发人员及时对问题进行分析,这是因为,开发人员希望在Java层获取到异常信息并对其进行分析,从而确定异常类型和原因。例如,Tombstones是一种典型的Native Crash,其表现是,如果发生崩溃的native层和UI有关联(比如Browser),可以在UI上发现这个崩溃,而如果发生崩溃的native层是在后台并且和UI没有直接联系,那么对于用户来说是不可见的,这种对于用户不可见的崩溃,如果可以及时在Java层获取到相关异常信息,则有助于开发人员的分析和处理。
对此,本发明实施例提供一种Android***中Native层异常上报处理方法,参见图1,该方法包括:
S101:对Native层异常上报事件进行监听,其中,Native层异常上报事件是指Native层向***服务上报异常信息的事件;
S102:当监听到Native层异常上报事件时,截获异常信息;
S103:将捕获的异常信息提供给Java层,由Java层解析异常信息并分析异常原因。
通过上述方法,由于在监听到Native层异常上报事件后,不是直接执行上报事件,而是截获异常信息,并提供给Java层。由此,避免了开发人员在Java层无法获知Native层异常信息的问题。相比于原Native层异常上报事件的处理方式,由于可在Java层实时获知异常信息,对异常信息进行分析,可提高异常处理的效率。
本发明实施例是在Native层异常上报事件执行之前通过中断机制对事件的执行过程进行控制。具体的,可采用hook(挂钩或钩子)机制实现。hook机制允许应用程序截获处理操作***的消息或特定事件。钩子实际上是一个处理消息的程序段,通过***调用,把它挂入***。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。在本发明实施例中,采用hook机制中断直接执行Native层异常上报事件的过程,实现在监听到Native层异常上报事件后截获异常信息并提高给Java层。也即,利用hook机制,通过Native层中的异常交互接口将Native层异常上报事件中的异常信息发送给Java层,其中,异常交互接口是Native层提供的供Java层获取异常信息的接口,Java层需预先注册该异常交互接口。
在具体实现中,可以在Native层通过一个异常中断服务来处理异常中断任务,相应的,可以在Java层通过一个异常处理服务。这两个服务是相互对应的,异常中断服务主要是负责在Native层对Native层异常上报事件的监听、中断以及对异常交互接口的调用,相应的,异常处理服务需要建立与异常中断服务的联系(预先注册),在异常中断服务监听到Native层异常上报事件后,由异常交互接口接收异常信息,后续对异常信息进行分析和处理。
为了实现对Native层异常上报事件的监听,可以在Native层设置并启动一个Native层异常***;通过该Native层异常***,监听是否发起了Native层异常上报连接(例如,socket连接),如果是,确定监听到Native层异常上报事件。可以理解,该Native层异常***可以是操作***框架中的一个功能模块。Java层的异常处理服务需要预先在Native层异常***中进行注册,也即建立Native层异常***与异常处理服务之间的联系。在异常处理服务注册了Native层异常***之后,当Native层异常***监听到Native层异常上报事件后,异常中断任务立即通过异常交互接口调用异常处理服务,将异常信息提供给异常处理服务,后续由异常处理服务对异常信息进行分析和处理。
本发明实施例中,Native层异常上报事件是指按照现有处理Native层异常的机制,Native层将异常信息通过socket连接提供给***服务,这里的***服务一般是指Android***提供的处理Native层异常的特定关键服务,在Android***中一般是固定的。本发明对原Native层异常上报事件进行中断并截获异常信息给Java层之后,可以终断原Native层异常上报事件过程,即,不继续向***服务发送异常信息;也可以继续执行原过程,即,向***服务发送异常信息,此时,在将捕获的异常信息提供给Java层之后,上述方法还包括:继续执行原Native层异常上报事件,将异常信息发送给***服务。
本发明实施例中,异常信息一般是指Native层崩溃(Native Crash)的函数栈信息,例如包括空指针、地址异常等信息。
下面以android操作***为例,以一个具体实例对本发明进行说明。本领域技术人员可以理解,虽然以安装有Android***的智能终端为例,对本发明的原理进行示例性描述,然而此描述仅仅是示例性的,本发明的范围并不限于此,本发明的原理也可以适用于安装有其它操作***(例如Linux、iOS、Windows Phone、Symbian等)的智能终端。
参见图2,为该实例示意图。
在实现过程中,涉及***的Native层和Java层。如图2中,Java层主要执行异常处理服务相关的过程,主要包括为异常处理服务注册Native层异常***、通过异常交互接口获取到异常信息;Native层主要提供Native层异常***、向Java层提供异常交互接口,以及向***服务提供事件执行接口(图中未示出,Native层向***服务继续执行Native层异常上报事件的接口)。
按照执行顺序,首先在Native层,利用Native层异常***对Native层异常上报事件进行监听,当监听到之后,通过异常交互接口向Java层发送异常信息;在Java层,通过异常处理服务预先注册的Native层异常***监听到了异常上报事件,通过异常交互接口获取到异常信息,然后对异常信息进行分析和处理,例如解析异常信息确定异常类型以及异常消除方式。
可以理解,实现本发明实施例过程中,相当于在android***的***框架层的Native层中添加一个名为异常中断服务,其中提供如下接口:
Native层调用异常处理服务的异常交互接口:通过此接口通知异常处理服务监听到了异常上报事件(即发起了异常上报事件,而实际上报事件还未执行);
Native层向***服务执行上报事件的事件执行接口(图中未示出),Native层在中断异常事件上报之后,向***服务继续执行Native层异常上报事件的接口。
通过上面的介绍可知,本发明实施例通过在监听到Native层异常上报事件后,首先中断上报过程,截获异常信息并提供给Java层,后续再继续或终断原上报事件的执行。
与上述方法相对应,本发明还提供一种Android***中Native层异常上报处理装置。该装置可以通过硬件、软件或软硬件结合方式实现。该装置可以是指终端内部的功能模块,也可以是指终端本身,只要终端包括实现该装置的功能即可。
图3示出了根据本发明一个实施例的Android***中Native层异常上报处理装置结构示意图。该装置包括监听单元301、截获单元302和提供单元303,其中,
监听单元301,用于对Native层异常上报事件进行监听,其中,所述Native层异常上报事件是指Native层向***服务上报异常信息的事件;
截获单元302,用于当监听到Native层异常上报事件时,截获异常信息;
提供单元303,用于将捕获的异常信息提供给Java层,由所述Java层解析所述异常信息并分析异常原因。
具体的,可以采用hook机制实现Native层异常上报事件的中断。
Hook(挂钩或钩子)机制允许应用程序截获处理操作***的消息或特定事件。钩子实际上是一个处理消息的程序段,通过***调用,把它挂入***。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。在本发明实施例中,采用hook机制中断直接执行Native层异常上报事件的过程,实现在监听到Native层异常上报事件后截获异常信息并提高给Java层。也即,利用hook机制,通过Native层中的异常交互接口将Native层异常上报事件中的异常信息发送给Java层,其中,异常交互接口是Native层提供的供Java层获取异常信息的接口,Java层需预先注册该异常交互接口。
优选的,所述监听单元301在监听到Native层异常上报事件后,所述截获单元302采用hook机制中断执行Native层异常上报事件的过程,所述提供单元303利用异常交互接口将Native层异常上报事件中的异常信息发送给Java层,其中,所述Java层预先注册所述异常交互接口。
优选的,所述监听单元301具体用于:在Native层设置并启动Native层异常***;通过所述Native层异常***,监听是否发起了Native层异常上报连接,如果是,确定监听到Native层异常上报事件。
优选的,在所述Native层设置异常中断服务,在所述Java层设置异常处理服务,其中,使所述异常处理服务预先在所述Native层异常***中进行注册;所述提供单元303具体用于:当所述Native层异常***监听到Native层异常事件后,所述异常中断服务调用所述异常交互接口将异常信息发送给所述异常处理服务。
优选的,该装置还包括:上报执行单元304,用于继续执行原Native层异常上报事件,将异常信息发送给所述***服务。
优选的,所述异常信息包括Native层崩溃的函数栈信息。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的Android***中Native层异常上报处理装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
由此,本发明实施例至少提供如下技术方案:
A1、一种Android***中Native层异常上报处理方法,包括:
对Native层异常上报事件进行监听,其中,所述Native层异常上报事件是指Native层向***服务上报异常信息的事件;
当监听到Native层异常上报事件时,截获异常信息;
将捕获的异常信息提供给Java层,由所述Java层解析所述异常信息并分析异常原因。
A2、如A1所述的方法,在监听到Native层异常上报事件后,采用hook机制中断执行Native层异常上报事件的过程,利用异常交互接口将Native层异常上报事件中的异常信息发送给Java层,其中,所述Java层预先注册所述异常交互接口。
A3、如A2所述的方法,所述对Native层异常上报事件进行监听,包括:
在Native层设置并启动Native层异常***;
通过所述Native层异常***,监听是否发起了Native层异常上报连接,如果是,确定监听到Native层异常上报事件。
A4、如A3所述的方法,还包括:在所述Native层设置异常中断服务,在所述Java层设置异常处理服务,其中,使所述异常处理服务预先在所述Native层异常***中进行注册;
所述将捕获的异常信息提供给Java层包括:当所述Native层异常***监听到Native层异常事件后,所述异常中断服务调用所述异常交互接口将异常信息发送给所述异常处理服务。
A5、如A1-A4任一项所述的方法,在所述将捕获的异常信息提供给Java层之后,还包括:
继续执行原Native层异常上报事件,将异常信息发送给所述***服务。
A6、如A1-A4任一项所述的方法,其特征在于,所述异常信息包括Native层崩溃的函数栈信息。
B7、一种Android***中Native层异常上报处理装置,包括:
监听单元,用于对Native层异常上报事件进行监听,其中,所述Native层异常上报事件是指Native层向***服务上报异常信息的事件;
截获单元,用于当监听到Native层异常上报事件时,截获异常信息;
提供单元,用于将捕获的异常信息提供给Java层,由所述Java层解析所述异常信息并分析异常原因。
B8、如B7所述的装置,所述监听单元在监听到Native层异常上报事件后,所述截获单元采用hook机制中断执行Native层异常上报事件的过程,所述提供单元利用异常交互接口将Native层异常上报事件中的异常信息发送给Java层,其中,所述Java层预先注册所述异常交互接口。
B9、如B8所述的装置,所述监听单元具体用于:在Native层设置并启动Native层异常***;通过所述Native层异常***,监听是否发起了Native层异常上报连接,如果是,确定监听到Native层异常上报事件。
B10、如B9所述的装置,在所述Native层设置异常中断服务,在所述Java层设置异常处理服务,其中,使所述异常处理服务预先在所述Native层异常***中进行注册;
所述提供单元具体用于:当所述Native层异常***监听到Native层异常事件后,所述异常中断服务调用所述异常交互接口将异常信息发送给所述异常处理服务。
B11、如B7-B10任一项所述的装置,还包括:
上报执行单元,用于继续执行原Native层异常上报事件,将异常信息发送给所述***服务。
B12、如B7-B10任一项所述的装置,所述异常信息包括Native层崩溃的函数栈信息。

Claims (10)

1.一种Android***中Native层异常上报处理方法,其特征在于,包括:
对Native层异常上报事件进行监听,其中,所述Native层异常上报事件是指Native层向***服务上报异常信息的事件,所述异常信息是指Native层崩溃的函数栈信息;
当监听到Native层异常上报事件时,截获异常信息;
利用hook机制中断直接执行Native层异常上报事件的过程,通过Native层中的异常交互接口将捕获的异常信息提供给Java层,由所述Java层解析所述异常信息并分析异常原因。
2.如权利要求1所述的方法,其特征在于,在监听到Native层异常上报事件后,采用hook机制中断执行Native层异常上报事件的过程,利用异常交互接口将Native层异常上报事件中的异常信息发送给Java层,其中,所述Java层预先注册所述异常交互接口。
3.如权利要求2所述的方法,其特征在于,所述对Native层异常上报事件进行监听,包括:
在Native层设置并启动Native层异常***;
通过所述Native层异常***,监听是否发起了Native层异常上报连接,如果是,确定监听到Native层异常上报事件。
4.如权利要求3所述的方法,其特征在于,还包括:在所述Native层设置异常中断服务,在所述Java层设置异常处理服务,其中,使所述异常处理服务预先在所述Native层异常***中进行注册;
所述将捕获的异常信息提供给Java层包括:当所述Native层异常***监听到Native层异常事件后,所述异常中断服务调用所述异常交互接口将异常信息发送给所述异常处理服务。
5.如权利要求1-4任一项所述的方法,其特征在于,在所述将捕获的异常信息提供给Java层之后,还包括:
继续执行原Native层异常上报事件,将异常信息发送给所述***服务。
6.一种Android***中Native层异常上报处理装置,其特征在于,包括:
监听单元,用于对Native层异常上报事件进行监听,其中,所述Native层异常上报事件是指Native层向***服务上报异常信息的事件,所述异常信息是指Native层崩溃的函数栈信息;
截获单元,用于当监听到Native层异常上报事件时,截获异常信息;
提供单元,用于利用hook机制中断直接执行Native层异常上报事件的过程,通过Native层中的异常交互接口将捕获的异常信息提供给Java层,由所述Java层解析所述异常信息并分析异常原因。
7.如权利要求6所述的装置,其特征在于,所述监听单元在监听到Native层异常上报事件后,所述截获单元采用hook机制中断执行Native层异常上报事件的过程,所述提供单元利用异常交互接口将Native层异常上报事件中的异常信息发送给Java层,其中,所述Java层预先注册所述异常交互接口。
8.如权利要求7所述的装置,其特征在于,所述监听单元具体用于:在Native层设置并启动Native层异常***;通过所述Native层异常***,监听是否发起了Native层异常上报连接,如果是,确定监听到Native层异常上报事件。
9.如权利要求8所述的装置,其特征在于,在所述Native层设置异常中断服务,在所述Java层设置异常处理服务,其中,使所述异常处理服务预先在所述Native层异常***中进行注册;
所述提供单元具体用于:当所述Native层异常***监听到Native层异常事件后,所述异常中断服务调用所述异常交互接口将异常信息发送给所述异常处理服务。
10.如权利要求6-9任一项所述的装置,其特征在于,还包括:
上报执行单元,用于继续执行原Native层异常上报事件,将异常信息发送给所述***服务。
CN201611179578.3A 2016-12-19 2016-12-19 Android***中Native层异常上报处理方法及装置 Active CN106598770B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611179578.3A CN106598770B (zh) 2016-12-19 2016-12-19 Android***中Native层异常上报处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611179578.3A CN106598770B (zh) 2016-12-19 2016-12-19 Android***中Native层异常上报处理方法及装置

Publications (2)

Publication Number Publication Date
CN106598770A CN106598770A (zh) 2017-04-26
CN106598770B true CN106598770B (zh) 2020-08-18

Family

ID=58601830

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611179578.3A Active CN106598770B (zh) 2016-12-19 2016-12-19 Android***中Native层异常上报处理方法及装置

Country Status (1)

Country Link
CN (1) CN106598770B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107704356B (zh) 2017-06-12 2019-06-28 平安科技(深圳)有限公司 异常堆栈信息获取方法、装置及计算机可读存储介质
CN111414270B (zh) * 2020-03-24 2023-05-09 北京字节跳动网络技术有限公司 一种异常处理方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8656382B2 (en) * 2006-09-14 2014-02-18 International Business Machines Corporation Preventing an incompatible class exception caused by incompatible class loaders
CN104156275A (zh) * 2014-06-30 2014-11-19 青岛海信移动通信技术股份有限公司 一种安卓Android平台异常处理的方法和装置
CN105975856A (zh) * 2015-09-25 2016-09-28 武汉安天信息技术有限责任公司 一种移动终端病毒动态检测方法及***

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8656382B2 (en) * 2006-09-14 2014-02-18 International Business Machines Corporation Preventing an incompatible class exception caused by incompatible class loaders
CN104156275A (zh) * 2014-06-30 2014-11-19 青岛海信移动通信技术股份有限公司 一种安卓Android平台异常处理的方法和装置
CN105975856A (zh) * 2015-09-25 2016-09-28 武汉安天信息技术有限责任公司 一种移动终端病毒动态检测方法及***

Also Published As

Publication number Publication date
CN106598770A (zh) 2017-04-26

Similar Documents

Publication Publication Date Title
US10298469B2 (en) Automatic asynchronous handoff identification
US10452469B2 (en) Server performance correction using remote server actions
CN108804215B (zh) 一种任务处理方法、装置以及电子设备
CN109446309B (zh) 问题反馈方法及装置
US20150281035A1 (en) Monitoring of Node.JS Applications
CN108241496B (zh) 应用程序的平滑升级方法及装置
US20150319221A1 (en) Tracing business transactions based on application frameworks
US20150067146A1 (en) Custom correlation of a distributed business transaction
CN107193666B (zh) 应用程序之间调用的控制方法及装置
CN110765464A (zh) 漏洞检测方法、装置、设备及计算机存储介质
CN108121650B (zh) 一种对于页面用户界面的测试方法及装置
CN106598770B (zh) Android***中Native层异常上报处理方法及装置
CN110399275B (zh) 异常展示方法及装置
CN109784054B (zh) 行为堆栈信息获取方法及装置
US10191844B2 (en) Automatic garbage collection thrashing monitoring
CN112416762B (zh) Api测试方法及装置、设备、计算机可读存储介质
CN114385457A (zh) 应用程序数据采集方法、装置、设备及存储介质
CN111147445B (zh) 抓包方法、装置、***及存储介质
CN106970884B (zh) 应用于安卓***运行层处理串口命令的方法及装置
CN114826886A (zh) 一种应用软件容灾方法、装置及电子设备
WO2010018619A1 (ja) 情報処理装置及びハングアップ原因調査用情報取得方法
CN108288135B (zh) ***兼容方法及装置、计算机可读存储介质及电子设备
CN112416698A (zh) 监控***的扩展方法及装置、存储介质及电子设备
US9942361B2 (en) Reporting page composition data
CN112188189B (zh) 电视设备的预警方法、预警服务器及计算机可读存储介质

Legal Events

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