The invention relates to the field of software maintenance, in particular to a Native layer crash traceability method, device, storage medium and terminal in an Android system. The method includes: capturing the signal event of an application crash in the Native layer, detecting whether the signal event has been registered by the application program; and The component has been registered with the application program and calls the corresponding processing function of the signal event preset by the application process to execute the processing function: calling the function interface of the Java layer in the Native layer to obtain the JNIEnv variable of the thread receiving the signal event; calling the FindClass function to obtain the JNIEnv variable through the JNIEnv variable to obtain the JNIEnv function AVA class; reflection call getStackTrace function, get the call stack information of each Java class, get all the information of the whole Java layer call stack; trace the cause of the collapse of the Native layer according to all the information of the whole Java layer call stack. The invention solves the problem that the cause of the Native layer collapse in the Android system can not be traced well at present.
【技术实现步骤摘要】
Android系统中Native层崩溃溯源方法、装置、存储介质及终端
本专利技术涉及软件维护领域,具体涉及一种Android系统中Native层崩溃溯源方法、装置、存储介质及终端。
技术介绍
由于Android设备品牌多、系统版本杂,所以在Android系统中会因为兼容性等问题,造成应用程序的各种崩溃(Crash),而且在这些Crash中,Native层崩溃(NativeCrash)一直是Crash里的大头,NativeCrash具有上下文不全、出错信息模糊、难以捕捉等特点,比JavaCrash更难修复,当应用程序的Crash是发生在Native层的时候,大部分都是很难定位到具体的问题的,因为在很多时候,在这些Crash的信息中,只能看到当前崩溃点的一些有限的信息,很多都是崩溃在系统库中,看不到Java层的相关逻辑或是调用栈等可用信息,所以此类问题的解决,一直都是解决应用程序性能和稳定性中最大的难点。
技术实现思路
为克服以上技术问题,特别是现有技术无法很好地追溯的Android系统中Native层崩溃的原因问题,特提出以下技术方案:第一方面,本专利技术提供了一种Android系统中Native层崩溃溯源方法,包括:捕获应用程序出现的在Native层崩溃的信号事件,检测所述信号事件是否已被所述应用程序注册;若所述信号事件已被所述应用程序注册,调用应用程序进程预置的该信号事件对应的处理函数,执行所述处理函数:在Native层中调用Java层的函数接口,获取接收到所述信号事件的线程的JNIEnv变量;通过所述JNIEnv变量调用FindClass函数获取各个Jav ...
【技术保护点】
1.一种Android系统中Native层崩溃溯源方法,其特征在于,包括:捕获应用程序出现的在Native层崩溃的信号事件;检测所述信号事件是否已被所述应用程序注册;若所述信号事件已被所述应用程序注册,调用应用程序进程预置的该信号事件对应的处理函数,执行所述处理函数:在Native层中调用Java层的函数接口,获取接收到所述信号事件的线程的JNIEnv变量;通过所述JNIEnv变量调用FindClass函数获取各个Java类;反射调用getStackTrace函数,获取所述各个Java类的调用栈信息,得到整个Java层调用栈的全部信息;根据所述整个Java层调用栈的全部信息追溯Native层崩溃产生的原因。
【技术特征摘要】
1.一种Android系统中Native层崩溃溯源方法,其特征在于,包括:捕获应用程序出现的在Native层崩溃的信号事件;检测所述信号事件是否已被所述应用程序注册;若所述信号事件已被所述应用程序注册,调用应用程序进程预置的该信号事件对应的处理函数,执行所述处理函数:在Native层中调用Java层的函数接口,获取接收到所述信号事件的线程的JNIEnv变量;通过所述JNIEnv变量调用FindClass函数获取各个Java类;反射调用getStackTrace函数,获取所述各个Java类的调用栈信息,得到整个Java层调用栈的全部信息;根据所述整个Java层调用栈的全部信息追溯Native层崩溃产生的原因。2.根据权利要求1所述的方法,其特征在于,所述信号事件包括SIGSEGV、SIGABRT、SIGFPE、SIGILL、SIGBUS、SIGSTKFLT,所述应用程序通过调用Sigaction函数对所述信号事件进行注册。3.根据权利要求2所述的方法,其特征在于,所述检测所述信号事件是否已被所述应用程序注册之后,还包括:若所述信号事件没有被所述应用程序注册,对该信号事件的处理保留系统的默认值或忽略该信号事件。4.根据权利要求1所述的方法,其特征在于,所述在Native层中调用Java层的函数接口获取接收到所述信号事件的线程的JNIEnv变量,包括:在Native层中调用AttachCurrentThread函数获取接收到所述信号事件的当前线程的JNIEnv变量。5.根据权利要求1所述的方法,其特征在于,所述获取整个Java层调用栈的全部信息之后,还包括:将所述应用程序出现的在Native层崩溃的信号事件及所述整个Java层调用栈的全部信息生成dump文件后上报到服务器。6.一种Android系统中Native层崩溃溯源装置,...
【专利技术属性】
技术研发人员:卢雄涛,
申请(专利权)人:广州华多网络科技有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。