本发明专利技术公开了一种异常信号处理方法及装置,其中,上述异常信号处理方法包括:对异常信号进行捕获;当捕获到异常信号时,记录当前捕获到的所述异常信号的位置信息;根据记录的所述异常信号的位置信息再次引发所述异常信号。本发明专利技术提供的技术方案能够使得已被捕获的异常信号能够被再次捕获。
【技术实现步骤摘要】
本专利技术涉及终端
,具体涉及一种异常信号处理方法及装置。
技术介绍
客户端在运行过程中,可能会因为各种原因而发生崩溃,解决崩溃问题是移动应用开发者日常的工作之一。目前,操作系统中引发客户端崩溃的代码本质上有两类,一类是C++语言层面的异常,比如野指针、除零、内存访问异常等系统底层异常;另一类是未捕获异常,比如iOS操作系统中最常见的objective-c的NSException。对于上述第一类异常,可通过信号机制来捕获,即任何系统异常都会抛出一个异常信号,通过设定的signal函数对异常信号进行捕获。然而,该signal函数在捕获到异常信号后会“吃掉”该异常信号,这使得其它有捕获该异常信号需求的工程师就无法捕获该异常信号了。
技术实现思路
本专利技术提供一种异常信号处理方法及装置,使得已被捕获的异常信号能够被再次捕获。本专利技术一方面提供一种异常信号处理方法,包括:对异常信号进行捕获;当捕获到异常信号时,记录当前捕获到的上述异常信号的位置信息;根据记录的上述异常信号的位置信息再次引发上述异常信号。基于上述第一方面,在第一种可能的实现方式中,上述对异常信号进行捕获具体为:通过signal函数或sigaction函数对异常信号进行捕获;上述当捕获到异常信号时,存储当前捕获到的异常信号的位置信息,具体为:当通过signal函数或sigaction函数捕获到异常信号时,记录当前捕获到的上述异常信号的位置信息。基于上述第一方面,或者上述第一方面的第一种可能的实现方式,在第二种可能的实现方式中,上述根据记录的上述异常信号的位置信息再次引发上述异常信号,具体为:根据记录的上述异常信号的位置信息,调用raise函数引发上述异常信号。基于上述第一方面,或者上述第一方面的第一种可能的实现方式,在第三种可能的实现方式中,当捕获到异常信号之后,上述方法还包括:通过Utils.Log方法并基于上述异常信号生成崩溃日志。基于本专利技术第一方面的第三种可能的实现方式,在第四种可能的实现方式中,上述通过Utils.Log方法将上述异常信号记录到崩溃日志中,之后还包括:上报上述崩溃日志。本专利技术第二方面提供一种异常信号处理装置,包括:捕获单元,用于对异常信号进行捕获;记录单元,用于当上述捕获单元捕获到异常信号时,记录当前捕获到的上述异常信号的位置信息;激活单元,用于根据上述记录单元记录的上述异常信号的位置信息再次引发上述异常信号。基于本专利技术第二方面,在第一种可能的实现方式中,上述捕获单元具体用于:通过signal函数或sigaction函数对异常信号进行捕获;上述记录单元具体用于:当上述捕获单元捕获到通过signal函数或sigaction函数捕获到异常信号时,记录当前捕获到的上述异常信号的位置信息。基于本专利技术第二方面,或者本专利技术第二方面的第一种可能的实现方式,在第二种可能的实现方式中,上述激活单元具体用于:根据上述记录单元记录的上述异常信号的位置信息,调用raise函数引发上述异常信号。基于本专利技术第二方面,或者本专利技术第二方面的第一种可能的实现方式,在第三种可能的实现方式中,上述异常信号处理装置还包括:生成单元,用于通过Utils.Log方法并基于上述捕获单元捕获到的异常信号生成崩溃日志。基于本专利技术第二方面的第三种可能的实现方式,在第四种可能的实现方式中,上述异常信号处理装置还包括:上报单元,用于上报上述生成单元生成的上述崩溃日志。由上可见,本专利技术在捕获到异常信号时,记录当前捕获到的异常信号的位置信息,之后根据记录的异常信号的位置信息再次引发该异常信号,从而不影响其他人对该异常信号的捕获,使得已被捕获的异常信号能够被再次捕获。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术提供的一种异常信号处理方法一个实施例流程示意图;图2为本专利技术提供的一种异常信号处理装置一个实施例结构示意图。具体实施方式为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而非全部实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。实施例一本专利技术实施例提供一种异常信号处理方法,请参阅图1,本专利技术实施例中的异常信号处理方法,包括:步骤101、对异常信号进行捕获;本专利技术实施例中提及的异常信号主要是指野指针、除零、内存访问异常等系统底层的异常信号。可选的,通过signal函数或sigaction函数对异常信号进行捕获。下面分别对通过signal函数或sigaction函数进行说明:1、对于signal函数,在<signal.h>这个头文件中,其函数格式如下:signal(参数1,参数2);其中,参数1表示待处理的信号,参数2表示处理的方式(例如系统默认操作、忽略还是捕获)。在本专利技术实施例中,通过将上述参数1设置为待捕获的异常信号(例如系统底层的异常信号),将参数2设置为捕获,以此实现通过signal函数对异常信号进行捕获。2、sigaction函数的接口头文件及原型如下:#include<signal.h>intsigaction(intsignum,conststructsigaction*act,structsigaction*oldact);其中,signum表示待处理的信号;act表示对待处理的信号的新处理方式;oldact表示对待处理的信号的原处理方式。在本专利技术实施例中,通过将signum设置为待捕获的异常信号(例如系统底层的异常信号),将act设置为捕获,即可实现通过sigaction函数对异常信号进行捕获。当然,本专利技术实施例中也可以通过其它方式对异常信号进行捕获,此处不作限定。步骤102、当捕获到异常信号时,记录当前捕获到的上述异常信号的位置信息;本专利技术实施例中,当步骤101捕获到异常信号时,记录当前捕获到的上述异常信号的位置信息。由于此时异常信号多是位于内存中,因此,当捕获到异常信号时,上述记录当前捕获到的上述异常信号的位置信息实质上是为记录当前捕获到的上述异常信号在内存中的位置信息。可选的,只在通过signal函数或sigaction函数捕获到异常信号时,才记录当前捕获到的上述异常信号的位置信息。则步骤102具体表现为:当通过signal函数或sigaction函数捕获到异常信号时,记录当前捕获到的上述异常信号的位置信息。步骤103、根据记录的上述异常信号的位置信息再次引发上述异常信号;本专利技术实施例中,根据步骤102记录的上述异常信号的位置信息激活上述异常信息,以便再次引发上述异常信号。具体地,可以根据记录的上述异常信号的位置信息,调用raise函数引发步骤102记录的异常信号。下面对raise函数进行说明:raise函数所需头文件:#include<signal.h>#include<s本文档来自技高网...
【技术保护点】
一种异常信号处理方法,其特征在于,包括:对异常信号进行捕获;当捕获到异常信号时,记录当前捕获到的所述异常信号的位置信息;根据记录的所述异常信号的位置信息再次引发所述异常信号。
【技术特征摘要】
1.一种异常信号处理方法,其特征在于,包括:对异常信号进行捕获;当捕获到异常信号时,记录当前捕获到的所述异常信号的位置信息;根据记录的所述异常信号的位置信息再次引发所述异常信号。2.根据权利要求1所述的方法,其特征在于,所述对异常信号进行捕获具体为:通过signal函数或sigaction函数对异常信号进行捕获;所述当捕获到异常信号时,存储当前捕获到的异常信号的位置信息,具体为:当通过signal函数或sigaction函数捕获到异常信号时,记录当前捕获到的所述异常信号的位置信息。3.根据权利要求1或2所述的方法,其特征在于,所述根据记录的所述异常信号的位置信息再次引发所述异常信号,具体为:根据记录的所述异常信号的位置信息,调用raise函数引发所述异常信号。4.根据权利要求1或2所述的方法,其特征在于,当捕获到异常信号之后,所述方法还包括:通过Utils.Log方法并基于所述异常信号生成崩溃日志。.5.根据权利要求4所述的方法,其特征在于,所述通过Utils.Log方法将所述异常信号记录到崩溃日志中,之后还包括:上报所述崩溃日志。6.一种异常信号处理装置,...
【专利技术属性】
技术研发人员:李春江,彭钊,
申请(专利权)人:平安科技深圳有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。