CN106407103A - 异常信号处理方法及装置 - Google Patents
异常信号处理方法及装置 Download PDFInfo
- Publication number
- CN106407103A CN106407103A CN201610576606.9A CN201610576606A CN106407103A CN 106407103 A CN106407103 A CN 106407103A CN 201610576606 A CN201610576606 A CN 201610576606A CN 106407103 A CN106407103 A CN 106407103A
- Authority
- CN
- China
- Prior art keywords
- abnormal signal
- capturing
- signal
- function
- positional information
- 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.)
- Pending
Links
- 230000002159 abnormal effect Effects 0.000 title claims abstract description 161
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 238000000034 method Methods 0.000 claims abstract description 22
- 230000006870 function Effects 0.000 claims description 28
- 230000009131 signaling function Effects 0.000 claims description 18
- 230000004913 activation Effects 0.000 claims description 7
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000007727 signaling mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种异常信号处理方法及装置,其中,上述异常信号处理方法包括:对异常信号进行捕获;当捕获到异常信号时,记录当前捕获到的所述异常信号的位置信息;根据记录的所述异常信号的位置信息再次引发所述异常信号。本发明提供的技术方案能够使得已被捕获的异常信号能够被再次捕获。
Description
技术领域
本发明涉及终端技术领域,具体涉及一种异常信号处理方法及装置。
背景技术
客户端在运行过程中,可能会因为各种原因而发生崩溃,解决崩溃问题是移动应用开发者日常的工作之一。
目前,操作系统中引发客户端崩溃的代码本质上有两类,一类是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>
int sigaction(int signum,const struct sigaction*act,struct sigaction*oldact);
其中,signum表示待处理的信号;act表示对待处理的信号的新处理方式;oldact表示对待处理的信号的原处理方式。
在本发明实施例中,通过将signum设置为待捕获的异常信号(例如系统底层的异常信号),将act设置为捕获,即可实现通过sigaction函数对异常信号进行捕获。
当然,本发明实施例中也可以通过其它方式对异常信号进行捕获,此处不作限定。
步骤102、当捕获到异常信号时,记录当前捕获到的上述异常信号的位置信息;
本发明实施例中,当步骤101捕获到异常信号时,记录当前捕获到的上述异常信号的位置信息。由于此时异常信号多是位于内存中,因此,当捕获到异常信号时,上述记录当前捕获到的上述异常信号的位置信息实质上是为记录当前捕获到的上述异常信号在内存中的位置信息。
可选的,只在通过signal函数或sigaction函数捕获到异常信号时,才记录当前捕获到的上述异常信号的位置信息。则步骤102具体表现为:当通过signal函数或sigaction函数捕获到异常信号时,记录当前捕获到的上述异常信号的位置信息。
步骤103、根据记录的上述异常信号的位置信息再次引发上述异常信号;
本发明实施例中,根据步骤102记录的上述异常信号的位置信息激活上述异常信息,以便再次引发上述异常信号。
具体地,可以根据记录的上述异常信号的位置信息,调用raise函数引发步骤102记录的异常信号。下面对raise函数进行说明:
raise函数所需头文件:
#include<signal.h>
#include<sys/types.h>
函数原型
Int raise(int sig)
其中,sig表示待发送的信号,本发明实施例中,通过将sig设置为捕获到的异常信号,即可实现通过raise函数再次引发捕获到的异常信号。
进一步,当捕获到异常信号之后,基于捕获到的异常信号生成崩溃日志。具体地,可通过Utils.Log方法并基于步骤101捕获到的异常信号生成崩溃日志。
进一步,在生成崩溃日志之后,上报该崩溃日志,以便工程人员基于该崩溃日志进行异常的分析和解决。
需要说明的是,本发明实施例中的异常信号处理方法具体可以由异常信号处理装置实现,该异常信号处理装置可以为智能终端(例如智能手机、平板电脑等),具体地,该异常信号处理装置可以搭载iOS操作系统、Andorid操作系统或其它底层为unix系统(或类unix系统)的操作系统的智能终端中。
由上可见,本发明在捕获到异常信号时,记录当前捕获到的异常信号的位置信息,之后根据记录的异常信号的位置信息再次引发该异常信号,从而不影响其他人对该异常信号的捕获,使得已被捕获的异常信号能够被再次捕获。
实施例二
本发明实施例提供一种异常信号处理装置。请参阅图2,本发明实施例中的异常信号处理装置200,包括:
捕获单元201,用于对异常信号进行捕获;
记录单元202,用于当捕获单元201捕获到异常信号时,记录当前捕获到的上述异常信号的位置信息;
激活单元203,用于根据记录单元202记录的上述异常信号的位置信息再次引发上述异常信号。
可选的,捕获单元201具体用于:通过signal函数或sigaction函数对异常信号进行捕获;记录单元202具体用于:当捕获单元201捕获到通过signal函数或sigaction函数捕获到异常信号时,记录当前捕获到的上述异常信号的位置信息。
可选的,激活单元203具体用于:根据记录单元202记录的上述异常信号的位置信息,调用raise函数引发上述异常信号。
可选的,本发明实施例中的异常信号处理装置还包括:
生成单元,用于通过Utils.Log方法并基于上述捕获单元捕获到的异常信号生成崩溃日志。
进一步,本发明实施例中的异常信号处理装置还包括:
上报单元,用于上报上述生成单元生成的上述崩溃日志。
需要说明的是,本发明实施例中的异常信号处理装置可以为智能终端(例如智能手机、平板电脑等),具体地,该异常信号处理装置可以搭载iOS操作系统、Andorid操作系统或其它底层为unix系统(或类unix系统)的操作系统的智能终端中。
应理解,本发明实施例中的异常信号处理装置的各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述方法实施例中的相关描述,此处不再赘述。
由上可见,本发明在捕获到异常信号时,记录当前捕获到的异常信号的位置信息,之后根据记录的异常信号的位置信息再次引发该异常信号,从而不影响其他人对该异常信号的捕获,使得已被捕获的异常信号能够被再次捕获。
需要说明的是,在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上为对本发明所提供的一种异常信号处理方法及装置的描述,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种异常信号处理方法,其特征在于,包括:
对异常信号进行捕获;
当捕获到异常信号时,记录当前捕获到的所述异常信号的位置信息;
根据记录的所述异常信号的位置信息再次引发所述异常信号。
2.根据权利要求1所述的方法,其特征在于,所述对异常信号进行捕获具体为:通过signal函数或sigaction函数对异常信号进行捕获;
所述当捕获到异常信号时,存储当前捕获到的异常信号的位置信息,具体为:当通过signal函数或sigaction函数捕获到异常信号时,记录当前捕获到的所述异常信号的位置信息。
3.根据权利要求1或2所述的方法,其特征在于,所述根据记录的所述异常信号的位置信息再次引发所述异常信号,具体为:
根据记录的所述异常信号的位置信息,调用raise函数引发所述异常信号。
4.根据权利要求1或2所述的方法,其特征在于,当捕获到异常信号之后,所述方法还包括:
通过Utils.Log方法并基于所述异常信号生成崩溃日志。.
5.根据权利要求4所述的方法,其特征在于,所述通过Utils.Log方法将所述异常信号记录到崩溃日志中,之后还包括:
上报所述崩溃日志。
6.一种异常信号处理装置,其特征在于,包括:
捕获单元,用于对异常信号进行捕获;
记录单元,用于当所述捕获单元捕获到异常信号时,记录当前捕获到的所述异常信号的位置信息;
激活单元,用于根据所述记录单元记录的所述异常信号的位置信息再次引发所述异常信号。.
7.根据权利要求6所述的异常信号处理装置,其特征在于,
所述捕获单元具体用于:通过signal函数或sigaction函数对异常信号进行捕获;
所述记录单元具体用于:当所述捕获单元捕获到通过signal函数或sigaction函数捕获到异常信号时,记录当前捕获到的所述异常信号的位置信息。
8.根据权利要求6或7所述的异常信号处理装置,其特征在于,
所述激活单元具体用于:根据所述记录单元记录的所述异常信号的位置信息,调用raise函数引发所述异常信号。
9.根据权利要求6或7所述的异常信号处理装置,其特征在于,所述异常信号处理装置还包括:
生成单元,用于通过Utils.Log方法并基于所述捕获单元捕获到的异常信号生成崩溃日志。
10.根据权利要求9所述的异常信号处理装置,其特征在于,所述异常信号处理装置还包括:
上报单元,用于上报所述生成单元生成的所述崩溃日志。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610576606.9A CN106407103A (zh) | 2016-07-20 | 2016-07-20 | 异常信号处理方法及装置 |
PCT/CN2017/073463 WO2018014544A1 (zh) | 2016-07-20 | 2017-02-14 | 异常信号处理方法、异常信号处理装置、存储介质及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610576606.9A CN106407103A (zh) | 2016-07-20 | 2016-07-20 | 异常信号处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106407103A true CN106407103A (zh) | 2017-02-15 |
Family
ID=58004146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610576606.9A Pending CN106407103A (zh) | 2016-07-20 | 2016-07-20 | 异常信号处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106407103A (zh) |
WO (1) | WO2018014544A1 (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008065436A (ja) * | 2006-09-05 | 2008-03-21 | Nec Corp | 携帯型情報端末機器の不具合改修システム、およびそれに用いる携帯型情報端末機器、方法、プログラム |
CN105653432A (zh) * | 2015-12-22 | 2016-06-08 | 北京奇虎科技有限公司 | 一种崩溃数据的处理方法和装置 |
CN105677550A (zh) * | 2015-12-29 | 2016-06-15 | 广州华多网络科技有限公司 | 一种基于Linux系统的性能采集分析的方法、装置及系统 |
CN105700973A (zh) * | 2016-01-14 | 2016-06-22 | 汉柏科技有限公司 | 一种命令行cli故障重启方法及装置 |
CN105824754A (zh) * | 2016-03-17 | 2016-08-03 | 广州多益网络股份有限公司 | 客户端程序的Python异常捕获和上传的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6205491B1 (en) * | 1997-12-18 | 2001-03-20 | Sun Microsystems, Inc. | Method and apparatus for deferred throwing of exceptions in C++ |
US6928582B2 (en) * | 2002-01-04 | 2005-08-09 | Intel Corporation | Method for fast exception handling |
CN1295600C (zh) * | 2002-10-25 | 2007-01-17 | 华为技术有限公司 | Windows程序异常捕获及定位方法 |
CN101060686B (zh) * | 2007-06-15 | 2011-05-11 | 中兴通讯股份有限公司 | 一种移动终端中异常诊断和错误环境再现的方法及装置 |
CN102184138B (zh) * | 2011-05-19 | 2013-09-18 | 广东威创视讯科技股份有限公司 | 一种软件错误自动重现和定位的方法及系统 |
CN104461876B (zh) * | 2014-11-26 | 2017-09-22 | 北京航空航天大学 | 一种基于运行快照序列的并行程序重现调试方法 |
-
2016
- 2016-07-20 CN CN201610576606.9A patent/CN106407103A/zh active Pending
-
2017
- 2017-02-14 WO PCT/CN2017/073463 patent/WO2018014544A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008065436A (ja) * | 2006-09-05 | 2008-03-21 | Nec Corp | 携帯型情報端末機器の不具合改修システム、およびそれに用いる携帯型情報端末機器、方法、プログラム |
CN105653432A (zh) * | 2015-12-22 | 2016-06-08 | 北京奇虎科技有限公司 | 一种崩溃数据的处理方法和装置 |
CN105677550A (zh) * | 2015-12-29 | 2016-06-15 | 广州华多网络科技有限公司 | 一种基于Linux系统的性能采集分析的方法、装置及系统 |
CN105700973A (zh) * | 2016-01-14 | 2016-06-22 | 汉柏科技有限公司 | 一种命令行cli故障重启方法及装置 |
CN105824754A (zh) * | 2016-03-17 | 2016-08-03 | 广州多益网络股份有限公司 | 客户端程序的Python异常捕获和上传的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2018014544A1 (zh) | 2018-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108023879A (zh) | 一种基于区块链的nb-iot设备数据采集系统及方法 | |
CN104680905B (zh) | 一种应用于实验教学的教学过程自动监测系统和监测方法 | |
CN104102734B (zh) | 数据展示方法及系统 | |
CN107036672B (zh) | 一种水位监测方法和装置 | |
CN108046073A (zh) | 一种电梯物联网监控系统 | |
CN107248042A (zh) | 考勤方法、装置及服务器 | |
CN106295554A (zh) | 一种人脸识别方法、系统及移动终端和人脸识别辅助装置 | |
CN103401988A (zh) | 手机、基于射频技术的手机通信控制方法及系统 | |
CN105306587B (zh) | 业务数据的处理方法、装置与系统 | |
CN104239130A (zh) | 人机交互界面对操作指令响应的控制方法及终端 | |
CN202773089U (zh) | 一种物联网智能移动终端 | |
CN103400239B (zh) | 一种基于rfid技术的印刷工艺质量监管方法及系统 | |
CN106896956B (zh) | 一种“道”系统下多点触控的实现方法 | |
CN109597652A (zh) | 规约解析方法、系统、计算机可读存储介质及通讯管理机 | |
CN106407103A (zh) | 异常信号处理方法及装置 | |
CN107563467A (zh) | 物品寻找方法和装置 | |
CN103428438A (zh) | 网络摄像机的网络参数设定方法及网络摄像机 | |
CN102053808B (zh) | 一种打印软件信息的方法、装置及带网口的设备 | |
CN208079095U (zh) | 一种电梯远程信息集成系统 | |
CN109271543A (zh) | 缩略图的显示方法、装置、终端及计算机可读存储介质 | |
CN109062839A (zh) | 一种检测hba卡的方法、装置和计算机可读存储介质 | |
CN108777705A (zh) | 一种工业智能制造系统 | |
CN106484195B (zh) | 电子白板的控制方法、装置以及系统 | |
CN106204261A (zh) | 一种信息处理方法、终端和服务器 | |
CN109344039A (zh) | 一种主机智能监控方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170215 |
|
RJ01 | Rejection of invention patent application after publication |