(12)发明专利申请
(10)申请公布号 CN 110554932 A(43)申请公布日 2019.12.10
(21)申请号 201910711821.9(22)申请日 2019.08.02
(71)申请人 恒鸿达科技有限公司
地址 350000 福建省福州市鼓楼区软件大
道89号福州软件园G区16号楼四层(72)发明人 曹礼玉
(74)专利代理机构 福州市鼓楼区京华专利事务
所(普通合伙) 35212
代理人 王美花(51)Int.Cl.
G06F 11/14(2006.01)G06F 11/36(2006.01)
权利要求书1页 说明书3页 附图3页
(54)发明名称
一种api模块异常检测方法(57)摘要
本发明提供一种api模块异常检测方法,包括以下步骤:S1、建立api检测线程;S2、设定api模块函数返回的最大超时时间;S3、调用所需要的api模块函数,执行相应的api模块功能;S4、api检测线程判断api模块函数是否在所述最大超时时间内返回:如果是,则表示本次调用的api模块为正常;如果否,则该api模块为异常。本发明具有如下优点:1、在实际使用中,通过此方法能快速有效地发现模块提供方的api阻塞或超时返回异常;2、快速排查及定位异常情况,生成日志文件,并进行出错处理;3、对于其他项目模块,也能通过此方法检测模块是否存在死锁。CN 110554932 ACN 110554932 A
权 利 要 求 书
1/1页
1.一种api模块异常检测方法,其特征在于:包括以下步骤:S1、建立api检测线程;S2、设定api模块函数返回的最大超时时间;S3、调用所需要的api模块函数,执行相应的api模块功能;S4、api检测线程判断api模块函数是否在所述最大超时时间内返回:如果是,则表示本次调用的api模块为正常;如果否,则该api模块为异常。
2.根据权利要求1所述的api模块异常检测方法,其特征在于:所述步骤S2具体为:设定api模块函数返回的最大超时时间;建立api队列,保存每次将要调用的api模块调用信息;该api模块调用信息包括调用起始时间、api标识、调用位置标识与所述最大超时时间。
3.根据权利要求2所述的api模块异常检测方法,其特征在于:所述步骤S2后还包括:S2-1、所述api检测线程检测api队列中所保存的api模块调用信息。
4.根据权利要求3所述的api模块异常检测方法,其特征在于:所述步骤S2-1具体为:所述api检测线程每隔T时间检测一次api队列中的api模块调用信息。
5.根据权利要求4所述的api模块异常检测方法,其特征在于:所述T时间设定为1秒或500毫秒。
6.根据权利要求3所述的api模块异常检测方法,其特征在于:所述步骤S4后还包括:S4-1、删除所述api队列中正常调用的api模块调用信息。
7.根据权利要求1所述的api模块异常检测方法,其特征在于:还包括步骤S5、异常处理:对于调试版本,先报告api队列中出错的api调用信息,然后进行assert函数操作,强制退出应用程序;对于发布版本时,先报告api队列中出错的api调用信息,然后进行系统出错恢复。
8.根据权利要求7所述的api模块异常检测方法,其特征在于:所述报告api队列中出错的api调用信息具体为:生成出错日志。
9.根据权利要求7所述的api模块异常检测方法,其特征在于:所述系统出错恢复具体为:标记与api模块相应的设备或api为不可用,若模块为非致命错误或非必要功能,则进行语音或显示提示,跳过相应模块的功能进行恢复。
10.根据权利要求7所述的api模块异常检测方法,其特征在于:所述系统出错恢复具体为:标记与api模块相应的设备或api为不可用,若模块为致命错误或必要功能,则进行语音或显示提示,然后应用重启或系统重启恢复。
2
CN 110554932 A
说 明 书
一种api模块异常检测方法
1/3页
技术领域
[0001]本发明涉及各种软件开发领域,具体地涉及一种api模块异常检测方法。背景技术
[0002]互联网的进步与发展极大地带动了应用软件的需求,随着软件需求的复杂化,软件的模块化开发需求越来越多,现今基本所有的开发都离不开模块化。[0003]模块化的开发引入了新的问题,当开发人员使用所在公司的其它项目组成员的api库,或者使用其它公司提供的api库时,api模块的提供方由于设备稳定性、网络因素、测试不全等原因,api模块会出现在规定时间内无法正常返回结果数据,或者一直阻塞在某个api调用里面;现有的技术没有给出针对这种情况的解决方案,而出现这种问题时,又经常会有一定的偶然性、不可重现性、环境依赖性,这给排查及定位问题带来很大的难度,需要花费很多时间与精力才能找出具体是哪个api出现的问题。
发明内容
[0004]本发明要解决的技术问题,在于提供一种api模块异常检测方法,能有效排查定位出现异常的api模块。
[0005]本发明是这样实现的:一种api模块异常检测方法,包括以下步骤:[0006]S1、建立api检测线程;[0007]S2、设定api模块函数返回的最大超时时间;[0008]S3、调用所需要的api模块函数,执行相应的api模块功能;[0009]S4、api检测线程判断api模块函数是否在所述最大超时时间内返回:如果是,则表示本次调用的api模块为正常;如果否,则该api模块为异常。[0010]进一步地,所述步骤S2具体为:设定api模块函数返回的最大超时时间;建立api队列,保存每次将要调用的api模块调用信息;该api模块调用信息包括调用起始时间、api标识、调用位置标识与所述最大超时时间。[0011]进一步地,所述步骤S2后还包括:S2-1、所述api检测线程检测api队列中所保存的api模块调用信息。[0012]进一步地,所述步骤S2-1具体为:所述api检测线程每隔T时间检测一次api队列中的api模块调用信息。[0013]进一步地,所述T时间设定为1秒或500毫秒。[0014]进一步地,所述步骤S4后还包括:S4-1、删除所述api队列中正常调用的api模块调用信息。
[0015]进一步地,还包括步骤S5、对于调试版本,先报告api队列中出错的api调用信息,然后进行assert函数操作,强制退出应用程序;对于发布版本时,先报告api队列中出错的api调用信息,然后进行系统出错恢复。[0016]进一步地,所述报告api队列中出错的api调用信息具体为:生成出错日志。
3
CN 110554932 A[0017]
说 明 书
2/3页
进一步地,所述系统出错恢复具体为:标记与api模块相应的设备或api为不可用,
若模块为非致命错误或非必要功能,则进行语音或显示提示,跳过相应模块的功能进行恢复。
[0018]进一步地,所述系统出错恢复具体为:标记与api模块相应的设备或api为不可用,若模块为致命错误或必要功能,则进行语音或显示提示,然后应用重启或系统重启恢复。[0019]本发明具有如下优点:1、在实际使用中,通过此方法能快速有效地发现模块提供方的api阻塞或超时返回异常;2、快速排查及定位异常情况,生成日志文件,并进行出错处理;3、对于其他项目模块,也能通过此方法检测模块是否存在死锁。附图说明
[0020]下面参照附图结合实施例对本发明作进一步的说明。[0021]图1为本发明的api模块异常检测方法的流程示意图。[0022]图2为本发明的api调用部分的流程示意图。
[0023]图3为本发明的api模块异常检测方法的框架示意图。
具体实施方式
[0024]参阅图1至图3,本发明的api模块异常检测方法的优选实施例,包括以下步骤:[0025]S1、建立api检测线程;其作用是检测api模块函数在调用后返回的时间。[0026]S2、设定api模块函数返回的最大超时时间;建立api队列,保存每次将要调用的api模块调用信息;该api模块调用信息包括调用起始时间、api标识、调用位置标识与所述最大超时时间。每个api队列可保存零或多个api模块调用信息。[0027]实际项目中,不一定是api队列,也可以是建立保存api模块调用信息的api栈;在使用到设备驱动厂家提供的api模块库,在读取wifi列表数据的api模块调用前,先将该读取wifi列表数据的api模块的调用信息保存在api队列中,并设定最大超时时间为10秒。[0028]S2-1、所述api检测线程每隔T时间检测一次api队列中所保存的api模块调用信息。所述T时间设定为1秒;即每隔1秒时间,api检测线程就检测api队列中用于读取wifi列表数据的api模块的调用信息;。[0029]S3、调用所需要的api模块函数,执行相应的api模块功能;即实际进行读取wifi列表数据的api模块调用。[0030]S4、api检测线程判断api模块函数是否在所述最大超时时间内返回:如果是,则表示本次调用的api模块为正常;如果否,则该api模块为异常。[0031]S4-1、删除所述api队列中正常调用的api模块调用信息。即如果读取wifi列表数据的api模块在10秒内有返回结果数据,则删除api队列中用于读取wifi列表数据的api模块调用信息。然后api检测线程继续定时检测。[0032]对于异常的api模块调用信息,其原因可能是电池电量不稳定等因素,如电池电量太低,同时打电话与wifi定位启动时,读取wifi列表数的api会一直阻塞在里面,则进行异常处理操作。[0033]S5、异常处理:对于调试版本的软件,先报告api队列中异常的读取wifi列表数据的api调用信息,生成出错日志保存在设备中,或者上传这个出错日志到服务器,出错日志
4
CN 110554932 A
说 明 书
3/3页
包括对应api模块的调用起始时间、api标识、调用位置标识与最大超时时间;然后进行assert函数操作,强制退出应用程序;[0034]对于发布版本的软件,先报告api队列中出错的读取wifi列表数据的api模块调用信息,生成出错日志,然后进行系统出错恢复;所述系统出错恢复具体有两个方案:[0035]其一,标记与api模块相应的设备或api为不可用,若模块为非致命错误或非必要功能,则进行语音或显示提示,跳过相应模块的功能进行恢复;[0036]其二,标记与api模块相应的设备或api为不可用,若模块为致命错误或必要功能,则进行语音或显示提示,然后应用重启或系统重启恢复。[0037]其中api队列能保存多个api模块的调用信息,api检测线程每隔T时间就检测api队列中所保存的多个api模块的调用情况,通过此方法能把具体调用的时间、位置等信息获取出来,出现问题时能有效减小排查定位该问题的时间。[0038]在开发过程中,对于另一项目组提供的系统定时器功能,由于加锁机制有个地方没有释放,导致api死锁,也可通过此方法确定相应的api死锁的位置与时间。[0039]虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
5
CN 110554932 A
说 明 书 附 图
1/3页
图1
6
CN 110554932 A
说 明 书 附 图
2/3页
图2
7
CN 110554932 A
说 明 书 附 图
3/3页
8
图3
因篇幅问题不能全部显示,请点此查看更多更全内容