CN107704356A - 异常堆栈信息获取方法、装置及计算机可读存储介质 - Google Patents
异常堆栈信息获取方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN107704356A CN107704356A CN201710440288.8A CN201710440288A CN107704356A CN 107704356 A CN107704356 A CN 107704356A CN 201710440288 A CN201710440288 A CN 201710440288A CN 107704356 A CN107704356 A CN 107704356A
- Authority
- CN
- China
- Prior art keywords
- exception stack
- stack information
- information
- exception
- abnormal signal
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0721—Error 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 within a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0778—Dumping, i.e. gathering error/state information after a fault for later diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0787—Storage of error reports, e.g. persistent data storage, storage using memory protection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Debugging And Monitoring (AREA)
- Retry When Errors Occur (AREA)
- Executing Machine-Instructions (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种异常堆栈信息获取方法,该方法包括:在项目的运行过程中,当侦测到预设的异常信号时,调用并执行异常信号处理函数,以获取native层的第一异常堆栈信息;读取侦测到所述异常信号时应用层记录的第二异常堆栈信息;将所述第一异常堆栈信息和所述第二异常堆栈信息进行组装后上报至服务器,并在上报完成后退出所述项目。本发明还提出一种异常堆栈信息获取装置以及一种计算机可读存储介质。本发明解决了现有技术中难以及时地获取应用程序中的异常堆栈信息并上传的技术问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种异常堆栈信息获取方法、装置及计算机可读存储介质。
背景技术
目前,如果APP在程序设计中存在异常,则用户在使用APP的过程中,会出现因APP的运行异常而发生崩溃闪退的现象,导致APP不能正常使用。因此,对于APP开发者来说,需要获取到应用程序在发生异常时产生的异常堆栈信息,及时地对应用程序中产生的异常问题的代码进行定位并分析。
而现有的获取异常堆栈信息的方式一般是,在应用程序发生异常并崩溃后,程序再次启动时,会从本地获取异常堆栈信息并上传。但是这种处理方式存在一定的缺陷,如果应用程发生异常并崩溃后,用户没有再次启动应用,则无法上传。
发明内容
本发明提供一种异常堆栈信息获取方法、装置及计算机可读存储介质,其主要目的在于解决现有技术中难以及时地获取应用程序中的异常堆栈信息并上传的技术问题。
为实现上述目的,本发明提供一种异常堆栈信息获取方法,该方法包括:
在项目的运行过程中,当侦测到预设的异常信号时,调用并执行异常信号处理函数,以获取native层的第一异常堆栈信息;
读取侦测到所述异常信号时应用层记录的第二异常堆栈信息;
将所述第一异常堆栈信息和所述第二异常堆栈信息进行组装后上报至服务器,并在上报完成后退出所述项目。
可选地,所述在项目的运行过程中,当侦测到预设的异常信号时,调用并执行异常信号处理函数,以获取native层的第一异常堆栈信息的步骤包括:
在所述项目的运行过程中,当侦测到预设的异常信号时,确定运行所述项目的操作系统的版本信息;
调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息,并根据所述地址信息生成第一异常堆栈信息。
可选地,所述调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息,并根据所述地址信息生成第一异常堆栈信息的步骤包括:
调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息;
根据所述地址信息获取异常堆栈数据,获取侦测到的所述异常信号的信号类型;
将所述信号类型与所述异常堆栈数据组装后生成所述第一异常堆栈信息。
可选地,所述第一异常堆栈信息和所述第二异常堆栈信息进行组装后上报至服务器,并在上报完成后退出所述项目的步骤包括:
读取存储的符号表,并基于所述符号表对获取到的第一异常堆栈信息进行还原处理,以将所述第一异常堆栈信息转换为所述服务器可读的第三异常堆栈信息;
将所述第三异常堆栈信息与所述第二异常堆栈信息进行组装后上报至所述服务器,并在上报完成后退出所述项目。
此外,为实现上述目的,本发明还提供一种异常堆栈信息获取装置,该装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的异常堆栈信息获取程序,所述异常堆栈信息获取程序被所述处理器执行时实现如下步骤:
在项目的运行过程中,当侦测到预设的异常信号时,调用并执行异常信号处理函数,以获取native层的第一异常堆栈信息;
读取侦测到所述异常信号时应用层记录的第二异常堆栈信息;
将所述第一异常堆栈信息和所述第二异常堆栈信息进行组装后上报至服务器,并在上报完成后退出所述项目。
可选地,所述在项目的运行过程中,当侦测到预设的异常信号时,调用并执行异常信号处理函数,以获取native层的第一异常堆栈信息的步骤包括:
在所述项目的运行过程中,当侦测到预设的异常信号时,确定运行所述项目的操作系统的版本信息;
调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息,并根据所述地址信息生成第一异常堆栈信息。
可选地,所述调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息,并根据所述地址信息生成第一异常堆栈信息的步骤包括:
调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息;
根据所述地址信息获取异常堆栈数据,获取侦测到的所述异常信号的信号类型;
将所述信号类型与所述异常堆栈数据组装后生成所述第一异常堆栈信息。
可选地,所述第一异常堆栈信息和所述第二异常堆栈信息进行组装后上报至服务器,并在上报完成后退出所述项目的步骤包括:
读取存储的符号表,并基于所述符号表对获取到的第一异常堆栈信息进行还原处理,以将所述第一异常堆栈信息转换为所述服务器可读的第三异常堆栈信息;
将所述第三异常堆栈信息与所述第二异常堆栈信息进行组装后上报至所述服务器,并在上报完成后退出所述项目。
可选地,所述读取存储的符号表,并基于所述符号表对获取到的第一异常堆栈信息进行还原处理,以将所述第一异常堆栈信息转换为所述服务器可读的第三异常堆栈信息的步骤包括:
启动信息还原脚本,基于所述信息还原脚本,将所述第一异常堆栈信息中的函数名依次与所述符号表中的函数名进行一一匹配,获取到所述第一异常堆栈信息中的函数名对应的文件名和行号;
将获取的文件名和行号添加至原始的第一异常堆栈信息,生成所述服务器可读的第三异常堆栈信息。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有异常堆栈信息获取程序,所述异常堆栈信息获取程序被处理器执行时实现上述异常堆栈信息获取方法的步骤。
本发明提出的异常堆栈信息获取方法、装置及计算机可读存储介质,在项目的运行过程中侦测到预设的异常信号时,调用并执行异常信号处理函数获取native层的第一异常堆栈信息,并且读取侦测到异常信号时应用层记录的第二异常堆栈信息,将上述native层和应用层的异常堆栈信息进行组装后上报至服务器,并且在上报完成后退出该项目,避免在检测到异常后,直接强制关闭项目,并且该发明能够通过预先定义的异常信号处理函数及时获取native层的第一异常堆栈信息在内的完整异常堆栈信息上传至服务器,能够全面的监控异常的发生,实时上报异常堆栈信息,对于开发人员来说,可以及时发现应用的异常,以便于快速进行异常定位和解决问题。
附图说明
图1为本发明异常堆栈信息获取方法第一实施例的流程图;
图2为本发明异常堆栈信息获取方法第二实施例中步骤S30的细化流程示意图;
图3为本发明异常堆栈信息获取装置较佳实施例的示意图;
图4为本发明异常堆栈信息获取装置中的异常堆栈信息获取程序的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种异常堆栈信息获取方法。参照图1所示,为本发明异常堆栈信息获取方法第一实施例的流程图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
在本实施例中,该异常堆栈信息获取方法包括:
步骤S10,在项目的运行过程中,当侦测到预设的异常信号时,调用并执行异常信号处理函数,以获取native层的第一异常堆栈信息。
本发明实施例中,项目是由代码构成的应用程序。终端可以从服务器下载项目,并安装运行。项目在终端上的运行过程中,对项目的运行情况进行实时检测。预先设置各种预设类型的异常信号,例如,</br>
_SIGABRT:由调用abort函数产生,进程非正常退出</br>_
_SIGILL:非法指令异常</br>_
_SIGBUS:某种特定的硬件异常,通常有内存访问引起</br>_
_SIGFPE:数学相关异常,如被除0、浮点移除等</br>_
_SIGSEGV:非法内存访问</br>_
在项目的运行过程中,当项目发生相关异常时,会触发对应的异常信号,来通知进程发生了异步事件。当终端侦测到的异常信号属于预设的异常信号时,调用并执行预设的异常信号处理函数,以获取native层的第一异常堆栈信息。异常信号处理函数需要预先配置,以供调用。
作为一种实施方式,异常信号处理函数可以通过以下代码实现:
其中,函数_skn\_signal\_handler_就是检测到异常信号后执行的函数,异常堆栈信息的获取就是在这个函数中进行的。
由于终端使用的操作系统的版本不同,配置的异常信号处理函数也不相同。因此,步骤S10可以包括以下细化步骤:
在所述项目的运行过程中,当侦测到预设的异常信号时,确定运行所述项目的操作系统的版本信息;调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息,并根据所述地址信息生成第一异常堆栈信息。
具体地,若操作系统的版本低于预设版本,则调用第一预设函数获取发生异常的地址信息,通过dladdr函数获取与地址信息对应的函数名以及so库信息;若操作系统的版本高于或等于预设版本,则通过dlopen函数从预设路径中调用第二预设函数获取发生异常的地址信息,通过dladdr函数获取与地址信息对应的函数名以及so库信息。其中,第一预设函数为预先配置的异常信号处理函数,第二预设函数为操作系统定义的函数,不需要用户预先配置,只需在侦测到的异常信号时,从特定的路径中调用即可。在本实施例中,异常堆栈信息主要包括发生异常的函数名以及so库信息。
以下以Android系统为例,预设版本为Android 5.0,由于Android 5.0开始Android采用ART虚拟机,所以异常信息的获取在Android5.0以上和Android5.0以下需要两种方案,Android 5.0以上使用unwind方法,Android 5.0以下使用libcorkscrew.so方法。具体的,关于unwind方法的使用,可以在代码中引入unwind.h头文件,通过\_Unwind\_Backtrace函数获取到产生异常的地址信息后,再通过dladdr函数获取到地址信息对应的函数名和so库信息。关于libcorkscrew.so方法的使用,上述预设路径可以是Android4.x版本的/system/lib/路径,通过dlopen函数打开对应的库,从而调用libcorkscrew.so方法,基于该方法查询到产生异常的地址信息,在基于该地址信息查找对应的函数名和so库信息。
优选地,作为一种实施方式,为了使开发人员能够了解到异常信号的具体信息,第一异常堆栈信息还包括侦测到的异常信号的信号类型。
调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息,并根据所述地址信息生成第一异常堆栈信息的步骤包括:调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息;根据所述地址信息获取异常堆栈数据,获取侦测到的所述异常信号的信号类型;将所述信号类型与所述异常堆栈数据组装后生成所述第一异常堆栈信息。
根据发生异常的地址信息获取到对应的有异常堆栈数据后,获取侦测到异常信号时记录的该异常信号所述的信号类型,将该信号类型与上述异常堆栈数据组装以生成第一异常堆栈信息,异常堆栈数据包括上述查找到的异常的函数名和so库信息。其中,第一异常堆栈信息可以在native层获取并保存在本地后,由native层向应用层发送通知信息,通知应用层读取,对于Android系统老说,应用层即Java层。在native层组装信号类型与异常堆栈数据时,使用预设的分隔符进行分隔,以便于应用层区分。
步骤S20,读取侦测到所述异常信号时应用层记录的第二异常堆栈信息。
步骤S30,将所述第一异常堆栈信息和所述第二异常堆栈信息进行组装后上报至服务器,并在上报完成后退出所述项目。
一般情况下,终端在侦测到异常信号时,其应用层会对其异常堆栈信息进行记录。一般根据系统的设置会存储在固定的路径中,因此,可以在检测到异常信号时,直接从设定的路径中读取存储的异常信息,作为上述第二异常堆栈信息。
将获取到的native层的第一异常堆栈信息和读取到的记录的应用层的第二异常堆栈信息进行封装处理,并上报到服务器,以供开发人员及时对应用程序中产生异常的代码进行定位并非分析,进而及时地对应用程序进行维护并更新。在上报完成后,退出当前的项目。
现有技术中获取native层异常堆栈的方式,一般代码量大,如Google BreakPad,或者需要系统root权限,如tombstone,才能够读取相关堆栈信息,且过程过于繁琐。
本实施例提出的异常堆栈信息获取方法,在项目的运行过程中侦测到预设的异常信号时,通过预先定义的函数获取到native层的异常堆栈信息,代码量小,且不需要root权限并且读取侦测到异常信号时应用层记录的第二异常堆栈信息,将两个异常堆栈信息封装后上传到服务器,再退出应用,避免在检测到异常后,直接强制关闭应用。因此能够及时的获取到包括native层在内的完整异常堆栈信息上传至服务器,能够全面的监控异常的发生,实时上报异常堆栈信息,对于开发人员来说,可以及时发现应用的异常,以便于快速定位和解决问题。
基于第一实施例提出本发明异常堆栈信息获取方法的第二实施例。参照图2所示,在本实施例中,步骤S30包括以下细化步骤:
步骤S31,读取存储的符号表,并基于所述符号表对获取到的第一异常堆栈信息进行还原处理,以将所述第一异常堆栈信息转换为所述服务器可读的第三异常堆栈信息;
步骤S32,将所述第三异常堆栈信息与所述第二异常堆栈信息进行组装后上报至所述服务器,并在上报完成后退出所述项目。
一般情况下,通过上述方式获取到的第一异常堆栈信息,对于开发者来说,可读性比较低,从第一异常信息中只能简单的看出其函数名,无法直接了解到异常所在的文件名以及所在的行号。为了提高其可读性,在获取到第一异常堆栈信息后,通过该应用匹配的符号表来对第一异常堆栈信息进行还原处理,以得到包含有函数名、该函数名对应的文件名以及行号的第三异常堆栈信息。其中,符号表是一种用于语言翻译器的数据结构,在符号表中,程序源代码中每个标识符都和它的声明或者使用信息绑定在一起,在该实施例中,在项目的符号表中,每一个函数名都有其对应的文件名及所在的行号。每一个版本的项目对应一个符号表,若项目升级,则需要对其符号表进行更新。
优选地,在其他实施例中,为了提高项目信息的安全性,可以将符号表存放在服务器,服务器接收到终端上报的异常堆栈信息后,根据存储的符号表对第一异常堆栈信息进行还原处理。
本实施例中,预先配置有信息还原脚本,获取到第一异常堆栈信息后,启动信息还原脚本,基于所述信息还原脚本,将所述第一异常堆栈信息中的函数名依次与所述符号表中的函数名进行一一匹配,获取到所述第一异常堆栈信息中的函数名对应的文件名和行号;将获取的文件名和行号添加至原始的第一异常堆栈信息,生成所述服务器可读的第三异常堆栈信息。
信息还原脚本可以是:
<code><pre>
./SknSymbol.sh crash.txt symbol.txt>result.txt
</code></pre>
其中,crash.txt为未还原的异常信息,即第一异常堆栈信息;symbol.txt为符号表;result.txt为还原后的异常信息,即第三异常堆栈信息。
例如,若获取到的异常信息为:
<code><pre>
\_Z2aav/data/app/com.pingan.pad_demo-2/lib/arm/libcrash.so
</code></pre>
经过上述信息还原脚本还原后的异常信息为:
<code><pre>
Z2aav
/Users/duyuan797/Workspace/sky-eye/sky-eye/src/main/cpp/./src/skncrash.cp
p:72/data/app/com.pingan.pad_demo-2/lib/arm/libcrash.so
</code></pre>
本实施例提出的方法,通过对获取到的native层的第一异常堆栈信息进行还原处理,以提高服务器对其的可读性,便于开发者获取到更加完整的异常信息。
参照图3所示,为本发明异常堆栈信息获取装置较佳实施例的示意图。
在本实施例中,异常堆栈信息获取装置可以是智能手机、平板电脑、电子书阅读器、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、便携计算机等具有显示功能的可移动式终端设备。
该异常堆栈信息装置包括存储器11、处理器12,通信总线13,以及网络接口14。其中,通信总线13用于实现这些组件之间的连接通信。网络接口14可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器11可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。
存储器11在一些实施例中可以是异常堆栈信息获取装置的内部存储单元,例如该异常堆栈信息获取装置的硬盘。存储器11在另一些实施例中也可以是异常堆栈信息获取装置的外部存储设备,例如异常堆栈信息获取装置上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括异常堆栈信息获取装置的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于异常堆栈信息获取装置的应用软件及各类数据,例如异常堆栈信息获取程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行异常堆栈信息获取程序等。
图3仅示出了具有组件11-14以及异常堆栈信息获取程序的异常堆栈信息获取装置,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
可选地,该装置还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(OrganicLight-Emitting Diode,有机发光二极管)触摸器等。显示器用于显示在异常堆栈信息获取装置中处理的信息以及用于显示可视化的用户界面。
可选地,该装置还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,若该装置为移动终端,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
在图3所示的装置实施例中,作为一种计算机存储介质的存储器11中可以包括操作系统、以及异常堆栈信息获取程序;网络接口14主要用于连接服务器,与服务器进行数据通信;处理器12执行存储器11中存储的异常堆栈信息获取程序时实现如下步骤:
在项目的运行过程中,当侦测到预设的异常信号时,调用并执行异常信号处理函数,以获取native层的第一异常堆栈信息;
读取侦测到所述异常信号时应用层记录的第二异常堆栈信息;
将所述第一异常堆栈信息和所述第二异常堆栈信息进行组装后上报至服务器,并在上报完成后退出所述项目。
本发明实施例中,项目是由代码构成的应用程序。终端可以从服务器下载项目,并安装运行。项目在终端上的运行过程中,对项目的运行情况进行实时检测。预先设置各种预设类型的异常信号,例如,</br>
_SIGABRT:由调用abort函数产生,进程非正常退出</br>_
_SIGILL:非法指令异常</br>_
_SIGBUS:某种特定的硬件异常,通常有内存访问引起</br>_
_SIGFPE:数学相关异常,如被除0、浮点移除等</br>_
_SIGSEGV:非法内存访问</br>_
在项目的运行过程中,当项目发生相关异常时,会触发对应的异常信号,来通知进程发生了异步事件。当终端侦测到的异常信号属于预设的异常信号时,调用并执行预设的异常信号处理函数,以获取native层的第一异常堆栈信息。异常信号处理函数需要预先配置,以供调用。
作为一种实施方式,异常信号处理函数可以通过以下代码实现:
其中,函数_skn\_signal\_handler_就是检测到异常信号后执行的函数,异常堆栈信息的获取就是在这个函数中进行的。
由于终端使用的操作系统的版本不同,配置的异常信号处理函数也不相同。因此,异常堆栈信息获取程序被处理器12执行时还实现如下步骤:
在所述项目的运行过程中,当侦测到预设的异常信号时,确定运行所述项目的操作系统的版本信息;调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息,并根据所述地址信息生成第一异常堆栈信息。
具体地,异常堆栈信息获取程序被处理器12执行时还实现如下步骤:
若操作系统的版本低于预设版本,则调用第一预设函数获取发生异常的地址信息,通过dladdr函数获取与地址信息对应的函数名以及so库信息;若操作系统的版本高于或等于预设版本,则通过dlopen函数从预设路径中调用第二预设函数获取发生异常的地址信息,通过dladdr函数获取与地址信息对应的函数名以及so库信息。
其中,第一预设函数为预先配置的异常信号处理函数,第二预设函数为操作系统定义的函数,不需要用户预先配置,只需在侦测到的异常信号时,从特定的路径中调用即可。在本实施例中,异常堆栈信息主要包括发生异常的函数名以及so库信息。
以下以Android系统为例,预设版本为Android 5.0,由于Android 5.0开始Android采用ART虚拟机,所以异常信息的获取在Android5.0以上和Android5.0以下需要两种方案,Android 5.0以上使用unwind方法,Android 5.0以下使用libcorkscrew.so方法。具体的,关于unwind方法的使用,可以在代码中引入unwind.h头文件,通过\_Unwind\_Backtrace函数获取到产生异常的地址信息后,再通过dladdr函数获取到地址信息对应的函数名和so库信息。关于libcorkscrew.so方法的使用,上述预设路径可以是Android4.x版本的/system/lib/路径,通过dlopen函数打开对应的库,从而调用libcorkscrew.so方法,基于该方法查询到产生异常的地址信息,在基于该地址信息查找对应的函数名和so库信息。
优选地,作为一种实施方式,为了使开发人员能够了解到异常信号的具体信息,第一异常堆栈信息还包括侦测到的异常信号的信号类型。
异常堆栈信息获取程序被处理器12执行时还实现如下步骤:
调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息,并根据所述地址信息生成第一异常堆栈信息的步骤包括:调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息;根据所述地址信息获取异常堆栈数据,获取侦测到的所述异常信号的信号类型;将所述信号类型与所述异常堆栈数据组装后生成所述第一异常堆栈信息。
根据发生异常的地址信息获取到对应的有异常堆栈数据后,获取侦测到异常信号时记录的该异常信号所述的信号类型,将该信号类型与上述异常堆栈数据组装以生成第一异常堆栈信息,异常堆栈数据包括上述查找到的异常的函数名和so库信息。其中,第一异常堆栈信息可以在native层获取并保存在本地后,由native层向应用层发送通知信息,通知应用层读取,对于Android系统老说,应用层即Java层。在native层组装信号类型与异常堆栈数据时,使用预设的分隔符进行分隔,以便于应用层区分。
一般情况下,终端在侦测到异常信号时,其应用层会对其异常堆栈信息进行记录。一般根据系统的设置会存储在固定的路径中,因此,可以在检测到异常信号时,直接从设定的路径中读取存储的异常信息,作为上述第二异常堆栈信息。
将获取到的native层的第一异常堆栈信息和读取到的记录的应用层的第二异常堆栈信息进行封装处理,并上报到服务器,以供开发人员及时对应用程序中产生异常的代码进行定位并非分析,进而及时地对应用程序进行维护并更新。在上报完成后,退出当前的项目。
现有技术中获取native层异常堆栈的方式,一般代码量大,如Google BreakPad,或者需要系统root权限,如tombstone,才能够读取相关堆栈信息,且过程过于繁琐。
本实施例提出的异常堆栈信息获取装置,在项目的运行过程中侦测到预设的异常信号时,通过预先定义的函数获取到native层的异常堆栈信息,代码量小,且不需要root权限并且读取侦测到异常信号时应用层记录的第二异常堆栈信息,将两个异常堆栈信息封装后上传到服务器,再退出应用,避免在检测到异常后,直接强制关闭应用。因此能够及时的获取到包括native层在内的完整异常堆栈信息上传至服务器,能够全面的监控异常的发生,实时上报异常堆栈信息,对于开发人员来说,可以及时发现应用的异常,以便于快速定位和解决问题。
基于第一实施例提出本发明异常堆栈信息获取装置的第二实施例。在本实施例中,异常堆栈信息获取程序被处理器12执行时还实现如下步骤:
读取存储的符号表,并基于所述符号表对获取到的第一异常堆栈信息进行还原处理,以将所述第一异常堆栈信息转换为所述服务器可读的第三异常堆栈信息;
将所述第三异常堆栈信息与所述第二异常堆栈信息进行组装后上报至所述服务器,并在上报完成后退出所述项目。
一般情况下,通过上述方式获取到的第一异常堆栈信息,对于开发者来说,可读性比较低,从第一异常信息中只能简单的看出其函数名,无法直接了解到异常所在的文件名以及所在的行号。为了提高其可读性,在获取到第一异常堆栈信息后,通过该应用匹配的符号表来对第一异常堆栈信息进行还原处理,以得到包含有函数名、该函数名对应的文件名以及行号的第三异常堆栈信息。其中,符号表是一种用于语言翻译器的数据结构,在符号表中,程序源代码中每个标识符都和它的声明或者使用信息绑定在一起,在该实施例中,在项目的符号表中,每一个函数名都有其对应的文件名及所在的行号。每一个版本的项目对应一个符号表,若项目升级,则需要对其符号表进行更新。
优选地,在其他实施例中,为了提高项目信息的安全性,可以将符号表存放在服务器,服务器接收到终端上报的异常堆栈信息后,根据存储的符号表对第一异常堆栈信息进行还原处理。
本实施例中,预先配置有信息还原脚本,获取到第一异常堆栈信息后,处理器12执行异常堆栈信息获取程序,实现如下步骤:
启动信息还原脚本,基于所述信息还原脚本,将所述第一异常堆栈信息中的函数名依次与所述符号表中的函数名进行一一匹配,获取到所述第一异常堆栈信息中的函数名对应的文件名和行号;将获取的文件名和行号添加至原始的第一异常堆栈信息,生成所述服务器可读的第三异常堆栈信息。
信息还原脚本可以是:
<code><pre>
./SknSymbol.sh crash.txt symbol.txt>result.txt
</code></pre>
其中,crash.txt为未还原的异常信息,即第一异常堆栈信息;symbol.txt为符号表;result.txt为还原后的异常信息,即第三异常堆栈信息。
例如,若获取到的异常信息为:
<code><pre>
\_Z2aav/data/app/com.pingan.pad_demo-2/lib/arm/libcrash.so
</code></pre>
经过上述信息还原脚本还原后的异常信息为:
<code><pre>
Z2aav
/Users/duyuan797/Workspace/sky-eye/sky-eye/src/main/cpp/./src/skncrash.cp p:72/data/app/com.pingan.pad_demo-2/lib/arm/libcrash.so
</code></pre>
本实施例提出的装置,通过异常堆栈信息获取程序获取到的native层的第一异常堆栈信息进行还原处理,以提高服务器对其的可读性,便于开发者获取到更加完整的异常信息。
可选地,在其他的实施例中,异常堆栈信息获取程序还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行,以完成本发明。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,用于描述异常堆栈信息获取程序在异常堆栈信息获取装置中的执行过程。
例如,在一实施例中,异常堆栈信息获取程序可以被分割为获取模块10和上报模块20,参照图4所示,为本发明异常堆栈信息获取装置中的异常堆栈信息获取程序的功能模块示意图,其中:
获取模块10,用于在项目的运行过程中,当侦测到预设的异常信号时,调用并执行异常信号处理函数,以获取native层的第一异常堆栈信息,以及读取侦测到所述异常信号时应用层记录的第二异常堆栈信息;
上报模块20,用于将所述第一异常堆栈信息和所述第二异常堆栈信息进行组装后上报至服务器,并在上报完成后退出所述项目。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有异常堆栈信息获取程序,所述异常堆栈信息获取程序被处理器执行时实现如下操作:
在项目的运行过程中,当侦测到预设的异常信号时,调用并执行异常信号处理函数,以获取native层的第一异常堆栈信息;
读取侦测到所述异常信号时应用层记录的第二异常堆栈信息;
将所述第一异常堆栈信息和所述第二异常堆栈信息进行组装后上报至服务器,并在上报完成后退出所述项目。
进一步地,所述异常堆栈信息获取程序被处理器执行时还实现如下操作:
在所述项目的运行过程中,当侦测到预设的异常信号时,确定运行所述项目的操作系统的版本信息;
调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息,并根据所述地址信息生成第一异常堆栈信息。
进一步地,所述异常堆栈信息获取程序被处理器执行时还实现如下操作:
调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息;
根据所述地址信息获取异常堆栈数据,获取侦测到的所述异常信号的信号类型;
将所述信号类型与所述异常堆栈数据组装后生成所述第一异常堆栈信息。
进一步地,所述异常堆栈信息获取程序被处理器执行时还实现如下操作:
读取存储的符号表,并基于所述符号表对获取到的第一异常堆栈信息进行还原处理,以将所述第一异常堆栈信息转换为所述服务器可读的第三异常堆栈信息;
将所述第三异常堆栈信息与所述第二异常堆栈信息进行组装后上报至所述服务器,并在上报完成后退出所述项目。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种异常堆栈信息获取方法,其特征在于,所述方法包括:
在项目的运行过程中,当侦测到预设的异常信号时,调用并执行异常信号处理函数,以获取native层的第一异常堆栈信息;
读取侦测到所述异常信号时应用层记录的第二异常堆栈信息;
将所述第一异常堆栈信息和所述第二异常堆栈信息进行组装后上报至服务器,并在上报完成后退出所述项目。
2.根据权利要求1所述的异常堆栈信息获取方法,其特征在于,所述在项目的运行过程中,当侦测到预设的异常信号时,调用并执行异常信号处理函数,以获取native层的第一异常堆栈信息的步骤包括:
在所述项目的运行过程中,当侦测到预设的异常信号时,确定运行所述项目的操作系统的版本信息;
调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息,并根据所述地址信息生成第一异常堆栈信息。
3.根据权利要求2所述的异常堆栈信息获取方法,其特征在于,所述调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息,并根据所述地址信息生成第一异常堆栈信息的步骤包括:
调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息;
根据所述地址信息获取异常堆栈数据,获取侦测到的所述异常信号的信号类型;
将所述信号类型与所述异常堆栈数据组装后生成所述第一异常堆栈信息。
4.根据权利要求1至3中任一项所述的异常堆栈信息获取方法,其特征在于,所述第一异常堆栈信息和所述第二异常堆栈信息进行组装后上报至服务器,并在上报完成后退出所述项目的步骤包括:
读取存储的符号表,并基于所述符号表对获取到的第一异常堆栈信息进行还原处理,以将所述第一异常堆栈信息转换为所述服务器可读的第三异常堆栈信息;
将所述第三异常堆栈信息与所述第二异常堆栈信息进行组装后上报至所述服务器,并在上报完成后退出所述项目。
5.一种异常堆栈信息获取装置,其特征在于,所述装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的异常堆栈信息获取程序,所述异常堆栈信息获取程序被所述处理器执行时实现如下步骤:
在项目的运行过程中,当侦测到预设的异常信号时,调用并执行异常信号处理函数,以获取native层的第一异常堆栈信息;
读取侦测到所述异常信号时应用层记录的第二异常堆栈信息;
将所述第一异常堆栈信息和所述第二异常堆栈信息进行组装后上报至服务器,并在上报完成后退出所述项目。
6.根据权利要求5所述的异常堆栈信息获取装置,其特征在于,所述在项目的运行过程中,当侦测到预设的异常信号时,调用并执行异常信号处理函数,以获取native层的第一异常堆栈信息的步骤包括:
在所述项目的运行过程中,当侦测到预设的异常信号时,确定运行所述项目的操作系统的版本信息;
调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息,并根据所述地址信息生成第一异常堆栈信息。
7.根据权利要求5所述的异常堆栈信息获取装置,其特征在于,所述调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息,并根据所述地址信息生成第一异常堆栈信息的步骤包括:
调用并执行与所述操作系统的版本信息对应的异常信号处理函数,获取发生异常的地址信息;
根据所述地址信息获取异常堆栈数据,获取侦测到的所述异常信号的信号类型;
将所述信号类型与所述异常堆栈数据组装后生成所述第一异常堆栈信息。
8.根据权利要求5至7中任一项所述的异常堆栈信息获取装置,其特征在于,所述第一异常堆栈信息和所述第二异常堆栈信息进行组装后上报至服务器,并在上报完成后退出所述项目的步骤包括:
读取存储的符号表,并基于所述符号表对获取到的第一异常堆栈信息进行还原处理,以将所述第一异常堆栈信息转换为所述服务器可读的第三异常堆栈信息;
将所述第三异常堆栈信息与所述第二异常堆栈信息进行组装后上报至所述服务器,并在上报完成后退出所述项目。
9.根据权利要求8所述的异常堆栈信息获取装置,其特征在于,所述读取存储的符号表,并基于所述符号表对获取到的第一异常堆栈信息进行还原处理,以将所述第一异常堆栈信息转换为所述服务器可读的第三异常堆栈信息的步骤包括:
启动信息还原脚本,基于所述信息还原脚本,将所述第一异常堆栈信息中的函数名依次与所述符号表中的函数名进行一一匹配,获取到所述第一异常堆栈信息中的函数名对应的文件名和行号;
将获取的文件名和行号添加至原始的第一异常堆栈信息,生成所述服务器可读的第三异常堆栈信息。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有异常堆栈信息获取程序,所述异常堆栈信息获取程序被处理器执行时实现如权利要求1至4中任一项所述的异常堆栈信息获取方法的步骤。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710440288.8A CN107704356B (zh) | 2017-06-12 | 2017-06-12 | 异常堆栈信息获取方法、装置及计算机可读存储介质 |
JP2018553347A JP6648306B2 (ja) | 2017-06-12 | 2017-09-30 | 異常スタック情報取得方法、装置及びコンピュータ読み取り可能な記憶媒体 |
SG11201901803SA SG11201901803SA (en) | 2017-06-12 | 2017-09-30 | Exception stack information acquisition method and device and computer-readable storage medium |
US16/088,831 US11010227B2 (en) | 2017-06-12 | 2017-09-30 | Exception stack information acquisition method and device and computer-readable storage medium |
PCT/CN2017/105018 WO2018227822A1 (zh) | 2017-06-12 | 2017-09-30 | 异常堆栈信息获取方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710440288.8A CN107704356B (zh) | 2017-06-12 | 2017-06-12 | 异常堆栈信息获取方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107704356A true CN107704356A (zh) | 2018-02-16 |
CN107704356B CN107704356B (zh) | 2019-06-28 |
Family
ID=61170175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710440288.8A Active CN107704356B (zh) | 2017-06-12 | 2017-06-12 | 异常堆栈信息获取方法、装置及计算机可读存储介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11010227B2 (zh) |
JP (1) | JP6648306B2 (zh) |
CN (1) | CN107704356B (zh) |
SG (1) | SG11201901803SA (zh) |
WO (1) | WO2018227822A1 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108763060A (zh) * | 2018-04-27 | 2018-11-06 | 广州华多网络科技有限公司 | Android系统中Native层崩溃溯源方法、装置、存储介质及终端 |
CN109766698A (zh) * | 2018-06-26 | 2019-05-17 | 360企业安全技术(珠海)有限公司 | 数据防护方法及装置 |
CN110275791A (zh) * | 2018-03-14 | 2019-09-24 | 普天信息技术有限公司 | 一种应用程序异常处理方法及装置 |
CN110750375A (zh) * | 2019-07-16 | 2020-02-04 | 许昌许继软件技术有限公司 | 一种嵌入式设备及其异常信息处理方法 |
CN111176869A (zh) * | 2019-08-01 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 超时检测方法、装置、设备及存储介质 |
CN111414270A (zh) * | 2020-03-24 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 一种异常处理方法及装置 |
CN111767164A (zh) * | 2020-05-18 | 2020-10-13 | 福建天晴数码有限公司 | 一种组装产品中定位崩溃堆栈所属组件的方法及其系统 |
CN112181695A (zh) * | 2019-07-01 | 2021-01-05 | 顺丰科技有限公司 | 异常应用处理方法、装置、服务器及存储介质 |
CN112395119A (zh) * | 2019-08-12 | 2021-02-23 | 北京达佳互联信息技术有限公司 | 异常数据处理方法、装置、服务器及存储介质 |
CN113760588A (zh) * | 2020-11-04 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种软件系统的异常信息获取方法和装置 |
CN113867847A (zh) * | 2021-11-30 | 2021-12-31 | 统信软件技术有限公司 | 一种异常插件处理方法、装置及计算设备 |
CN113900914A (zh) * | 2020-06-22 | 2022-01-07 | 阿里巴巴集团控股有限公司 | 异常处理方法、装置、电子设备及计算机存储介质 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457154B (zh) * | 2019-07-25 | 2023-12-22 | Oppo广东移动通信有限公司 | 异常服务处理方法及装置、存储介质、通信终端 |
CN111159051B (zh) * | 2019-12-31 | 2023-07-04 | 北京天融信网络安全技术有限公司 | 死锁检测方法、装置、电子设备及可读存储介质 |
CN113297052B (zh) * | 2020-02-21 | 2024-04-26 | 腾讯科技(深圳)有限公司 | 应用程序的卡顿事件定位方法、装置、存储介质和设备 |
CN114253825B (zh) * | 2020-09-22 | 2024-06-21 | 腾讯科技(深圳)有限公司 | 内存泄漏检测方法、装置、计算机设备和存储介质 |
CN114020540A (zh) * | 2022-01-05 | 2022-02-08 | 湖南新云网科技有限公司 | 一种app重启方法、系统、装置及计算机可读存储介质 |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731310A (zh) * | 2005-08-04 | 2006-02-08 | 西安交通大学 | Windows环境下的主机入侵检测方法 |
CN101261603A (zh) * | 2008-04-09 | 2008-09-10 | 中兴通讯股份有限公司 | 故障定位的方法和装置 |
CN103092746A (zh) * | 2013-02-05 | 2013-05-08 | 上海大唐移动通信设备有限公司 | 线程异常的定位方法及系统 |
CN103152381A (zh) * | 2013-01-07 | 2013-06-12 | 北京奇虎科技有限公司 | 一种对浏览器崩溃数据进行处理的方法和服务器系统 |
CN103544096A (zh) * | 2013-10-21 | 2014-01-29 | Tcl集团股份有限公司 | Android终端运行异常时的信息反馈方法及系统 |
CN103544447A (zh) * | 2013-05-30 | 2014-01-29 | Tcl集团股份有限公司 | 一种基于安卓系统的防止机密信息泄露的方法和终端 |
CN104021063A (zh) * | 2014-05-14 | 2014-09-03 | 南京大学 | 一种基于硬件虚拟化的模块化计算机取证系统及其方法 |
US20150095338A1 (en) * | 2013-09-27 | 2015-04-02 | Linkedln Corporation | Systems and methods for categorizing exceptions and logs |
CN104598313A (zh) * | 2015-02-04 | 2015-05-06 | 广州市久邦数码科技有限公司 | 一种应用进程被停止后自动重启的实现方法及其系统 |
CN104899111A (zh) * | 2015-06-09 | 2015-09-09 | 烽火通信科技股份有限公司 | 一种处理家庭网关系统内核崩溃的方法及系统 |
CN105204990A (zh) * | 2015-08-21 | 2015-12-30 | 上海斐讯数据通信技术有限公司 | 一种异常调试方法及系统 |
CN105320572A (zh) * | 2014-06-27 | 2016-02-10 | 腾讯科技(深圳)有限公司 | 浏览器异常处理方法、装置及系统 |
CN105450731A (zh) * | 2015-11-05 | 2016-03-30 | 珠海多玩信息技术有限公司 | 实现web层和native层通信的方法和装置 |
CN105653432A (zh) * | 2015-12-22 | 2016-06-08 | 北京奇虎科技有限公司 | 一种崩溃数据的处理方法和装置 |
CN105844157A (zh) * | 2016-04-20 | 2016-08-10 | 北京鼎源科技有限公司 | 一种针对Android系统App行为的监控方法 |
CN105930139A (zh) * | 2016-01-16 | 2016-09-07 | 平安科技(深圳)有限公司 | 应用程序控件动态配置方法及电子设备 |
CN106293629A (zh) * | 2016-08-16 | 2017-01-04 | 北京小米移动软件有限公司 | 堆栈获取方法及装置 |
CN106598770A (zh) * | 2016-12-19 | 2017-04-26 | 北京奇虎科技有限公司 | Android系统中Native层异常上报处理方法及装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6996829B2 (en) * | 2000-02-25 | 2006-02-07 | Oracle International Corporation | Handling callouts made by a multi-threaded virtual machine to a single threaded environment |
US7003778B2 (en) * | 2001-10-24 | 2006-02-21 | Sun Microsystems, Inc. | Exception handling in java computing environments |
US20070294675A1 (en) * | 2006-06-20 | 2007-12-20 | Transitive Limited | Method and apparatus for handling exceptions during binding to native code |
US7962924B2 (en) * | 2007-06-07 | 2011-06-14 | International Business Machines Corporation | System and method for call stack sampling combined with node and instruction tracing |
US8291381B2 (en) * | 2007-09-27 | 2012-10-16 | Microsoft Corporation | Call stack parsing in multiple runtime environments |
US20090013208A1 (en) * | 2008-03-31 | 2009-01-08 | Dimuzio Thomas M | Real time automated exception notification and reporting solution |
CN101599039B (zh) * | 2008-06-03 | 2011-11-02 | 华为技术有限公司 | 嵌入式c语言环境下异常处理方法及装置 |
US8799904B2 (en) * | 2011-01-21 | 2014-08-05 | International Business Machines Corporation | Scalable system call stack sampling |
CN104424090A (zh) * | 2013-08-22 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 一种标识崩溃的方法、装置和系统 |
EP2879074A1 (en) * | 2013-11-29 | 2015-06-03 | Gemalto SA | Method for loading a native code on a secure element |
CN105446822B (zh) * | 2015-11-13 | 2019-06-18 | 上海斐讯数据通信技术有限公司 | 基于Linux的软件异常处理系统及方法 |
TW201937379A (zh) * | 2017-12-05 | 2019-09-16 | 美商敏捷棧公司 | 用於管理資料中心與雲端應用程式基礎架構之系統、方法及非暫態計算機可讀介質 |
US10782945B1 (en) * | 2019-04-04 | 2020-09-22 | International Business Machines Corporation | Escape analysis supporting on-stack replacement |
-
2017
- 2017-06-12 CN CN201710440288.8A patent/CN107704356B/zh active Active
- 2017-09-30 JP JP2018553347A patent/JP6648306B2/ja active Active
- 2017-09-30 US US16/088,831 patent/US11010227B2/en active Active
- 2017-09-30 WO PCT/CN2017/105018 patent/WO2018227822A1/zh active Application Filing
- 2017-09-30 SG SG11201901803SA patent/SG11201901803SA/en unknown
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731310A (zh) * | 2005-08-04 | 2006-02-08 | 西安交通大学 | Windows环境下的主机入侵检测方法 |
CN101261603A (zh) * | 2008-04-09 | 2008-09-10 | 中兴通讯股份有限公司 | 故障定位的方法和装置 |
CN103152381A (zh) * | 2013-01-07 | 2013-06-12 | 北京奇虎科技有限公司 | 一种对浏览器崩溃数据进行处理的方法和服务器系统 |
CN103092746A (zh) * | 2013-02-05 | 2013-05-08 | 上海大唐移动通信设备有限公司 | 线程异常的定位方法及系统 |
CN103544447A (zh) * | 2013-05-30 | 2014-01-29 | Tcl集团股份有限公司 | 一种基于安卓系统的防止机密信息泄露的方法和终端 |
US20150095338A1 (en) * | 2013-09-27 | 2015-04-02 | Linkedln Corporation | Systems and methods for categorizing exceptions and logs |
CN103544096A (zh) * | 2013-10-21 | 2014-01-29 | Tcl集团股份有限公司 | Android终端运行异常时的信息反馈方法及系统 |
CN104021063A (zh) * | 2014-05-14 | 2014-09-03 | 南京大学 | 一种基于硬件虚拟化的模块化计算机取证系统及其方法 |
CN105320572A (zh) * | 2014-06-27 | 2016-02-10 | 腾讯科技(深圳)有限公司 | 浏览器异常处理方法、装置及系统 |
CN104598313A (zh) * | 2015-02-04 | 2015-05-06 | 广州市久邦数码科技有限公司 | 一种应用进程被停止后自动重启的实现方法及其系统 |
CN104899111A (zh) * | 2015-06-09 | 2015-09-09 | 烽火通信科技股份有限公司 | 一种处理家庭网关系统内核崩溃的方法及系统 |
CN105204990A (zh) * | 2015-08-21 | 2015-12-30 | 上海斐讯数据通信技术有限公司 | 一种异常调试方法及系统 |
CN105450731A (zh) * | 2015-11-05 | 2016-03-30 | 珠海多玩信息技术有限公司 | 实现web层和native层通信的方法和装置 |
CN105653432A (zh) * | 2015-12-22 | 2016-06-08 | 北京奇虎科技有限公司 | 一种崩溃数据的处理方法和装置 |
CN105930139A (zh) * | 2016-01-16 | 2016-09-07 | 平安科技(深圳)有限公司 | 应用程序控件动态配置方法及电子设备 |
CN105844157A (zh) * | 2016-04-20 | 2016-08-10 | 北京鼎源科技有限公司 | 一种针对Android系统App行为的监控方法 |
CN106293629A (zh) * | 2016-08-16 | 2017-01-04 | 北京小米移动软件有限公司 | 堆栈获取方法及装置 |
CN106598770A (zh) * | 2016-12-19 | 2017-04-26 | 北京奇虎科技有限公司 | Android系统中Native层异常上报处理方法及装置 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110275791A (zh) * | 2018-03-14 | 2019-09-24 | 普天信息技术有限公司 | 一种应用程序异常处理方法及装置 |
CN108763060A (zh) * | 2018-04-27 | 2018-11-06 | 广州华多网络科技有限公司 | Android系统中Native层崩溃溯源方法、装置、存储介质及终端 |
CN109766698A (zh) * | 2018-06-26 | 2019-05-17 | 360企业安全技术(珠海)有限公司 | 数据防护方法及装置 |
CN112181695A (zh) * | 2019-07-01 | 2021-01-05 | 顺丰科技有限公司 | 异常应用处理方法、装置、服务器及存储介质 |
CN110750375A (zh) * | 2019-07-16 | 2020-02-04 | 许昌许继软件技术有限公司 | 一种嵌入式设备及其异常信息处理方法 |
CN111176869B (zh) * | 2019-08-01 | 2022-05-10 | 腾讯云计算(北京)有限责任公司 | 超时检测方法、装置、设备及存储介质 |
CN111176869A (zh) * | 2019-08-01 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 超时检测方法、装置、设备及存储介质 |
CN112395119A (zh) * | 2019-08-12 | 2021-02-23 | 北京达佳互联信息技术有限公司 | 异常数据处理方法、装置、服务器及存储介质 |
CN112395119B (zh) * | 2019-08-12 | 2024-03-12 | 北京达佳互联信息技术有限公司 | 异常数据处理方法、装置、服务器及存储介质 |
CN111414270A (zh) * | 2020-03-24 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 一种异常处理方法及装置 |
CN111414270B (zh) * | 2020-03-24 | 2023-05-09 | 北京字节跳动网络技术有限公司 | 一种异常处理方法及装置 |
CN111767164A (zh) * | 2020-05-18 | 2020-10-13 | 福建天晴数码有限公司 | 一种组装产品中定位崩溃堆栈所属组件的方法及其系统 |
CN111767164B (zh) * | 2020-05-18 | 2022-08-09 | 福建天晴数码有限公司 | 一种组装产品中定位崩溃堆栈所属组件的方法及其系统 |
CN113900914A (zh) * | 2020-06-22 | 2022-01-07 | 阿里巴巴集团控股有限公司 | 异常处理方法、装置、电子设备及计算机存储介质 |
CN113760588A (zh) * | 2020-11-04 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种软件系统的异常信息获取方法和装置 |
CN113867847A (zh) * | 2021-11-30 | 2021-12-31 | 统信软件技术有限公司 | 一种异常插件处理方法、装置及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
SG11201901803SA (en) | 2019-04-29 |
US20210096942A1 (en) | 2021-04-01 |
JP2019525275A (ja) | 2019-09-05 |
CN107704356B (zh) | 2019-06-28 |
US11010227B2 (en) | 2021-05-18 |
WO2018227822A1 (zh) | 2018-12-20 |
JP6648306B2 (ja) | 2020-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107704356A (zh) | 异常堆栈信息获取方法、装置及计算机可读存储介质 | |
CN107276789A (zh) | 日志上传方法、装置及计算机可读存储介质 | |
CN108304205A (zh) | 一种应用程序的更新方法、终端及计算机可读存储介质 | |
CN108399074A (zh) | 一种应用程序的更新方法、终端及计算机可读存储介质 | |
CN108089977A (zh) | 一种应用程序的异常处理方法、装置及移动终端 | |
CN106708734A (zh) | 软件异常检测方法及装置 | |
CN107807861A (zh) | 冻屏解决方法、移动终端及计算机可读存储介质 | |
CN108595203A (zh) | 应用功能执行方法、移动终端和计算机可读存储介质 | |
CN108228230A (zh) | Ufs固件的升级方法、终端及计算机可读存储介质 | |
CN108519886A (zh) | 一种apk应用安装包配置方法、服务器、系统及存储介质 | |
CN107885635A (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
CN108230014A (zh) | 电子装置及使用电子装置显示网页的方法 | |
CN107784268A (zh) | 基于红外线传感器使用其来测量心率的方法和电子设备 | |
CN107765922B (zh) | 卡屏检测与解决方法、移动终端及计算机可读存储介质 | |
CN108090345A (zh) | linux系统外部命令执行方法及装置 | |
CN112231144A (zh) | 一种数据处理方法、装置及电子设备 | |
CN107908491A (zh) | 卡屏检测与解决方法、移动终端及计算机可读存储介质 | |
CN107704332A (zh) | 冻屏解决方法、移动终端及计算机可读存储介质 | |
CN107766222A (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
CN108052430A (zh) | 移动终端重启定位方法、移动终端及计算机可读存储介质 | |
CN108052391A (zh) | 基于线程死锁的内存优化方法、移动终端及可读存储介质 | |
CN107861827A (zh) | 卡屏检测方法、移动终端及计算机可读存储介质 | |
CN109522719A (zh) | 应用安装包的加固检测方法、装置及移动终端 | |
CN109828770A (zh) | 一种软件升级方法、终端设备及服务器 | |
CN108388616A (zh) | 数据收集装置、方法、系统及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1249616 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |