CN110399131B - 提高应用程序稳定性的方法、装置、计算机设备 - Google Patents
提高应用程序稳定性的方法、装置、计算机设备 Download PDFInfo
- Publication number
- CN110399131B CN110399131B CN201910433063.9A CN201910433063A CN110399131B CN 110399131 B CN110399131 B CN 110399131B CN 201910433063 A CN201910433063 A CN 201910433063A CN 110399131 B CN110399131 B CN 110399131B
- Authority
- CN
- China
- Prior art keywords
- function
- type
- parameter
- validity
- detection
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000001514 detection method Methods 0.000 claims abstract description 110
- 230000006870 function Effects 0.000 claims description 386
- 230000002159 abnormal effect Effects 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 4
- 230000015556 catabolic process Effects 0.000 abstract description 12
- 230000009286 beneficial effect Effects 0.000 abstract description 10
- 230000000875 corresponding effect Effects 0.000 description 65
- 238000010586 diagram Methods 0.000 description 13
- 230000005856 abnormality Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007488 abnormal function Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4432—Reducing the energy consumption
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例属于软件开发领域,涉及一种提高应用程序稳定性的方法、装置、计算机设备及存储介质,方法包括:根据获取到的业务层的函数调用请求,对所述函数调用请求中与函数对应的函数对象进行有效性检测;若对所述函数对象有效性检测通过,则在所述函数对象中,对所述函数的函数类型进行有效性检测;若对所述函数类型有效性检测通过,则获取与所述函数对应的函数参数,对所述函数参数进行有效性检测;若所述函数参数有效性检测通过,则调用所述函数对所述函数调用请求进行相应的响应。本发明通过对函数调用请求进行有效性检测,有利于提高应用程序的稳定性,降低应用程序崩溃的概率。
Description
技术领域
本申请涉及软件开发领域,尤其涉及提高应用程序稳定性的方法、装置、计算机设备及存储介质。
背景技术
目前,随着计算机技术与电子科技的发展,诸如智能手机或平板电脑等电子设备的功能越来越多,相应的计算处理功能也越来越强大。近年来,出现了针对各种操作系统平台的大量应用(APP,Application)程序,这些应用程序也逐渐渗入到人们的日常生活和工作中,并且与各行各业之间的联系愈加密不可分。常见的操作系统包括UNIX(分时操作系统)、Windows(视窗操作系统)、IOS(苹果移动操作系统)以及Android(安卓操作系统)等操作系统,使用诸如上述操作系统的电子设备在被人们期望能够拥有更快的处理速度的同时,也期望能够拥有更稳定的处理性能。
在现有技术中,在现有的用于诸如上述各种操作系统的应用,常出现程序异常的情况,例如会被操作系统杀掉进程,呈现给用户的则可能是设备回到操作主界面、甚至会黑屏等。目前,现有应用程序是使用到某个具体对象或者使用到某个具体的函数去判断这些具体的对象或者函数是否存在来控制应用程序崩溃。可见,在现有技术中存在检测时间长,效率低的问题。
发明内容
本申请实施例的目的在于提出一种提高应用程序稳定性的方法、装置、计算机设备及存储介质,可以提高应用程序的稳定性,降低应用程序崩溃的概率。
为了解决上述技术问题,本申请实施例提供提高应用程序稳定性的方法,采用了如下所述的技术方案:
包括下述步骤:
根据获取到的业务层的函数调用请求,对所述函数调用请求中与函数对应的函数对象进行有效性检测;
若对所述函数对象有效性检测通过,则在所述函数对象中,对所述函数的函数类型进行有效性检测;
若对所述函数类型有效性检测通过,则获取与所述函数对应的函数参数,对所述函数参数进行有效性检测;
若所述函数参数有效性检测通过,则调用所述函数对所述函数调用请求进行相应的响应。
为了解决上述技术问题,本申请实施例还提供提高应用程序稳定性的装置,采用了如下所述的技术方案:
所述提高应用程序稳定性的装置包括:
第一检测模块,用于根据获取到的业务层的函数调用请求,对所述函数调用请求中与函数对应的函数对象进行有效性检测;
第二检测模块,用于若对所述函数对象有效性检测通过,则在所述函数对象中,对所述函数的函数类型进行有效性检测;
第三检测模块,用于若对所述函数类型有效性检测通过,则获取与所述函数对应的函数参数,对所述函数参数进行有效性检测;
响应模块,用于若所述函数参数有效性检测通过,则调用所述函数对所述函数调用请求进行相应的响应。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的提高应用程序稳定性的技术方案:
所述计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现本申请实施例中提出的任一项所述的提高应用程序稳定性的方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的提高应用程序稳定性的技术方案:
所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例中提出的任一项所述的提高应用程序稳定性的方法的步骤。
与现有技术相比,本申请实施例主要有以下有益效果:通过根据获取到的业务层的函数调用请求,对所述函数调用请求中与函数对应的函数对象进行有效性检测;若对所述函数对象有效性检测通过,则在所述函数对象中,对所述函数的函数类型进行有效性检测;若对所述函数类型有效性检测通过,则获取与所述函数对应的函数参数,对所述函数参数进行有效性检测;若所述函数参数有效性检测通过,则调用所述函数对所述函数调用请求进行相应的响应。本发明通过对与函数调用请求相对应的函数的函数对象、函数类型以及函数参数有效性进行检测,有利于提高应用程序的稳定性,降低应用程序崩溃的概率。。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性系统架构图;
图2根据本申请提高应用程序稳定性的方法的一个实施例的流程图;
图3是根据本申请提高应用程序稳定性的方法的另一个实施例的流程图;
图4是图2中步骤201的一种具体实施方式的流程图;
图5是图2中步骤202的一种具体实施方式的流程图;
图6是图2中步骤203的一种具体实施方式的流程图;
图7是是根据本申请提高应用程序稳定性的方法的另一个实施例的流程图;
图8是图2中步骤201的另一种具体实施方式的流程图;
图9是本申请提高应用程序稳定性的装置的一个实施例的结构示意图;
图10是本申请提高应用程序稳定性的装置的另一个实施例的结构示意图;
图11是图9所示第一检测模块的一种具体实施方式的结构示意图;
图12是图9所示第二检测模块的一种具体实施方式的结构示意图
图13是图9所示第三检测模块的一种具体实施方式的结构示意图;
图14是本申请提高应用程序稳定性的装置的另一种具体实施例的结构示意图;
图15是图9所示第一检测模块的另一种具体实施方式的结构示意图;
图16根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、搜索类应用、即时通信工具等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
需要说明的是,本申请实施例所提供的提高应用程序稳定性的方法可以由服务器/终端设备执行,相应地,提高应用程序稳定性的装置可以设置于服务器/终端设备中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的提高应用程序稳定性的方法的一个实施例的流程图。上述的提高应用程序稳定性的方法,包括以下步骤:
步骤201,根据获取到的业务层的函数调用请求,对所述函数调用请求中与函数对应的函数对象进行有效性检测。
在本实施例中,提高应用程序稳定性的方法运行于其上的电子设备(例如图1所示的服务器/终端设备)可以通过有线连接方式或者无线连接方式获取到的业务层的函数调用请求。需要指出的是,上述无线连接方式可以包括但不限于3G/4G连接、WiFi(Wireless-Fidelity)连接、蓝牙连接、WiMAX(Worldwide Interoperability for Microwave Access)连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
其中,业务层是整个工程项目的最上层,也就是应用层,可以是根据具体的业务场景如图片浏览编辑、应用程序授权登陆等而实现的业务代码。这些业务代码可以通过调用操作系统层的函数接口从而实现相应的应用功能。上述函数调用请求可以是应用层根据要调用的函数对应生成的一个请求,可以将上述函数调用请求作为一个消息,函数可以是对于面向对象的程序,函数可以通过对象方法或者属性的形式定义在对象内部。其中,对象为某个面向对象程序的类的一个实例,上述的类可以是根据需要自我定义,也可以是其他标准库、第三方库或者系统提供。
具体的,通过在内存地址中检测上述函数调用请求要调用的函数对象是否已经加载到对应的内存地址中,如果在对应的内存地址中查找到上述函数对象,则表示上述函数对象的有效性检测通过。这样,通过对调用的函数的函数对象进行有效性检测,有利于提高程序的健壮性,能够降低应用程序崩溃的概率。
可选地,整个程序项目可以包括很多子项目,也就是多个子文件夹,各个子文件夹下可以包括相应的程序模块。这样,相应的程序模块有利于执行相应的子文件夹对应的功能。
步骤202,若对所述函数对象有效性检测通过,则在所述函数对象中,对所述函数的函数类型进行有效性检测。
在本实施例中,当检测到函数对象存在的情况下,进一步对该函数的函数类型进行有效性检测,函数类型可以是set函数或get函数,或者其他类型的函数。当在函数对象中查找到对应函数类型,则表示上述函数的函数类型有效性检测通过。这样,首先对函数对象进行有效性检测,再次通过对函数类型进行有效性检测,更有利于提高程序的健壮性,降低应用程序崩溃的概率,提高应用程序稳定性。
步骤203,若对所述函数类型有效性检测通过,则获取与所述函数对应的函数参数,对所述函数参数进行有效性检测。
在本实施例中,当检测到函数对象中存在该函数的函数类型时,再进一步对该函数的函数参数进行有效性检测,若在给对应的函数参数进行匹配的过程中,查找到与该函数参数一致的预先设置的函数参数,则说明该函数的函数参数有效性检测通过,例如:函数参数为整型。当然,函数参数的检测可以对多种参数进行检测,例如:参数个数、参数类型、参数位置以及参数大小等。在本发明实施例中,对此不做限定。
这样,通过对调用的函数的函数对象、函数类型以及函数参数进行检测,更好的保证与应用层发送的函数调用请求的对应函数可执行性,能够提高程序的健壮性,降低应用程序崩溃的概率,提高应用程序的稳定性。
步骤204,若所述函数参数有效性检测通过,则调用所述函数对所述函数调用请求进行相应的响应。在本实施例中,对函数调用请求进行有效性检测,在检测都通过时,说明应用层的函数调用请求有效,即可以调用与函数调用请求对应的函数进行执行。这样,能够对函数调用请求作出响应,有利于函数执行操作能顺利进行,保持进度。
在本实施例中,通过根据获取到的业务层的函数调用请求,对所述函数调用请求中与函数对应的函数对象进行有效性检测;若对所述函数对象有效性检测通过,则在所述函数对象中,对所述函数的函数类型进行有效性检测;若对所述函数类型有效性检测通过,则获取与所述函数对应的函数参数,对所述函数参数进行有效性检测;若所述函数参数有效性检测通过,则调用所述函数对所述函数调用请求进行相应的响应。本发明通过对函数的函数对象、函数类型以及函数参数有效性进行检测,有利于提高应用程序的稳定性,降低应用程序崩溃的概率。
进一步的,如图3所示,上述方法还可以包括以下步骤:
步骤301,若对所述函数调用请求的多级有效性检测未通过,则函数调用异常,并拦截函数调用生成异常信息;
步骤302,将所述异常信息发送到业务层。
在本实施例中,对应用层发出的函数调用请求进行相应的函数对象、函数类型以及函数参数有效性检测,如果检测中有任意一级没有通过检测,则说明函数调用请求存在异常,存在异常可以是函数对象查找不到,或函数类型查找不到,或者函数参数不一致。只要存在异常,则拦截对该函数的调用不执行与函数调用请求对应的动作,同时根据异常的情况对应生成一个异常信息,例如:函数对象不存在。并将该异常信息返回给应用层,应用层接收该异常信息的通知。
这样,能够在多级有效性检测不通过的情况下直接拦截函数的调用不予执行相应的动作,并形成一个通知信息,有利于降低函数调用无效导致的应用程序崩溃的概率,增强应用程序稳定性。
进一步的,如图4所示,上述步骤201的步骤具体可以包括:
步骤401,判断所述函数对象是否加载到对应内存地址中;
步骤402,若所述函数对象未加载到对应的内存地址中,则检测所述函数对象是否存在于项目层中对应的模块上;
步骤403,若所述函数对象不存在于所述项目层中对应的模块上,则所述函数对象有效性检测未通过,拦截函数调用,生成一级异常消息并发送到业务层。
在本实施例中,首先判断对应的函数对象是否已经存在于对应的内存中,在没有找到对应的函数对象时再进一步在项目层进行查找,根据程序里提供的路径检测上述函数对象是否存在于对应的项目层中的某个模块,若不存在,也即是在内存地址和项目层的某个模块上都没有查找到,则表明要调用的函数对象在项目中不存在,程序会停止执行相应功能拦截对该函数的调用,同时也会生成一级异常信息,例如:函数对象不存在。该一级异常信息为针对函数对象有效性检测设置,一级异常信息会反馈到应用层,应用层会接收该一级异常信息。
作为一种可能的实施方式,根据程序里提供的路径检测上述函数的函数对象存在于对应的项目层中的某个模块上,则并将其加载到内存地址中。这样,可以实现对函数对象的多级查找,增加函数对象的获取途径。
这样,根据获取到的业务层的函数调用请求,对函数对象进行有效性检测,判断在内存地址以及项目层的相应模块上是否存在该函数对象,在不存在的情况下,会通过直接拦截程序执行相应功能,并且生成一级异常信息反馈到业务层,能够有效地降低应用程序因为异常情况造成崩溃的概率,增强应用程序稳定性。
进一步的,如图5所示,上述步骤202的步骤具体可以包括:
步骤501,在所述函数对象中获取属性列表和函数列表;
步骤502,根据所述函数类型,在所述属性列表和/或函数列表中进行查找;
步骤503,若在所述属性列表和/或函数列表中未查找到调用的函数,则生成二级异常消息并发送到业务层。
在本实施例中,上述属性列表可以包括对应函数对象的所有属性,上述函数列表可以包括该函数对象的所有函数。获取上述函数对应的函数类型,当检查到调用的函数为set函数或get函数时,可以优先在属性列表中查找该属性类型再到函数列表中查找该属性类型。当然,若函数类型不是set函数或get函数时,可以在属性列表以及函数列表中同时或先后查找该函数类型。若都没有查找到一致的函数类型,则程序停止执行并直接返回二级异常信息,例如:函数类型不存在,该二级异常信息为针对函数类型有效性检测设置,二级异常信息将反馈到上述应用层。
这样,根据获取到的业务层的函数调用请求,对函数对象进行有效性检测通过之后,再对函数类型进行检测,当出现异常时,程序会直接停止执行并反馈二级异常信息到应用层,能够有效地降低应用程序因为异常情况造成崩溃的概率,增强应用程序稳定性。
进一步的,如图6所示,上述步骤203的步骤具体可以包括:
步骤601,获取所述调用的函数的传入参数个数,判断所述参数个数是否与预先设置的参数个数一致;
步骤602,若所述参数个数与预先设置的参数个数一致,则获取所述调用的函数的传入参数类型,判断所述参数类型是否与预先设置的参数类型一致;和/或
步骤603,若所述参数类型与预先设置的参数类型一致,则获取所述调用的函数的传入参数位置,判断所述参数位置是否与预先设置的参数位置一致;
步骤604,若对所述参数个数和/或参数类型和/或参数位置的检测有任意一项不一致,则生成三级异常消息并发送到业务层。
在本实施例中,对上述函数的函数对象以及函数类型对检测通过后,再进一步对函数的函数参数进行有效性检测。对函数的函数参数进行有效性检测可以包括对函数的参数个数和/或参数类型和/或参数位置进行检测,也即是获取上述函数的传入参数个数和/或参数类型,与预先设置的函数参数个数和/或参数类型进行匹配,比对是否一致,若是比对结果不一致,则表示函数参数的有效性检测未通过。若是上述函数存在位置参数,则在进行参数个数和/或参数类型匹配之后,还需进行位置参数的匹配。只要参数个数和/或参数类型和/或参数位置中存在任意一个参数匹配失败,则表示上述函数的函数参数有效性检测不通过,程序将立刻停止执行,拦截函数调用请求,并生成三级异常消息,例如:函数参数有效性检测失败。上述三级异常信息为针对函数参数有效性检测设置,三级异常信息将反馈到上述应用层。
这样,根据获取到的业务层的函数调用请求,对函数对象与函数类型进行有效性检测通过之后,再对函数参数进行检测,当出现异常时,程序会直接停止执行并反馈三级异常信息到应用层。通过对函数调用请求的函数对象、函数类型以及函数参数预先进行有效性检测,能够降低函数调用无效的可能性,增强了函数的调用效率,有利于降低应用程序因为异常情况造成崩溃的概率,增强应用程序稳定性。
进一步的,如图7所示,上述方法还可以包括以下步骤:
步骤701,根据不同的异常信息的类型,匹配对应的可执行请求方案;以及
步骤702,根据所述对应的可执行请求方案生成报告信息,将所述报告信息发送给所述业务层。
其中,上述异常信息的类型可以是上述一级异常信息、二级异常信息以及三级异常信息。上述可执行请求方案可以是预先针对各种异常信息类型进行设置好的方案,也可以是当出现异常情况时对应生成的方案,可执行方案可以包括与一级异常信息、二级异常信息以及三级异常信息对应的一级可执行方案、二级可执行方案以及三级可执行方案。上述报告信息可以是对可执行请求方案进行转换后的信息,通过该报告信息可以获取到正确的请求方式,报告信息可以包括与一级可执行方案、二级可执行方案以及三级可执行方案对应生成的一级报告信息,二级报告信息以及三级报告信息。如图7所示,即根据一级异常信息,匹配出对应的一级可执行方案,再对应生成一级报告信息。可选的,还可以是根据二级异常信息,匹配出对应的二级可执行方案,再对应生成二级报告信息等。通过对函数调用请求中对应的函数有效性检测并进行相应的处理,然后返回处理结果,有异常信息则反馈给应用层。
可选的,对应于上述函数的函数对象有效性检测未通过,生成的与一级异常信息对应的一级可执行请求方案可以包括函数对象的路径信息、类型信息等。这样有利于获取出现异常的具体信息对应的具体可执行请求方案,有利于提高应用程序的稳定性,降低应用程序崩溃的概率。
可选的,对应于上述函数的函数类型的有效性检测未通过,生成的与二级异常信息对应的二级可执行请求方案可以包括调用的函数类型的具体实现以及所属于的函数对象。这样,有利于获取出现异常的具体信息对应的具体可执行请求方案,可有利于提高应用程序的稳定性,降低应用程序崩溃的概率。
可选的,对应于上述函数的函数参数的有效性检测未通过,生成的与三级异常信息对应的三级可执行请求方案可以包括包括上述函数的参数个数、和/或每个参数的参数类型、和/或位置参数的所处的位置。这样,有利于获取出现异常的具体信息对应的具体可执行请求方案,有利于提高应用程序的稳定性,降低应用程序崩溃的概率。
这样,根据不同的异常信息,匹配对应的正确的请求方案发送给应用层,可以减少函数调用请求异常的次数,提高函数调用成功率,增强应用程序稳定性。
进一步的,如图8所示,上述步骤201还可以包括以下步骤:
步骤801,接收业务层发送的所述函数调用请求;
步骤802,将获取到的所述函数调用请求通过系统层传递给处理函数。
其中,可以是从系统消息层读取上述应用层的函数调用请求,上述应用层的函数调用请求可以是指应用层的业务代码根据业务的需要要调用的操作系统层的函数,对于面向对象的编程语言而言(如C++、C#、JAVA等),函数可以通过对象方法或者属性的形式定义在对象内部,因此,上述函数调用请求包括要调用的函数的函数对象、函数类型以及传递给调用的函数的函数参数。在本实施例中,上述应用层的函数调用请求首先被处理成消息,然后放入到操作系统的消息层提供的消息队列之中,有利于和其他程序共享。上述处理函数可以是系统消息层级的消息处理函数,用于从上述操作系统的消息层提供的消息队列之中读取上述的函数调用请求并进行上述的有效性检测处理。具体而言,上述的消息处理函数可以是一个线程,可以提高处理速度和减少系统的资源消耗。这样,能够通过消息处理函数对函数调用请求进行处理并对函数的有效性作出判断。
在另一种可能的实施方式中,可以通过管道、共享内存等系统提供的方法将上述函数调用请求传递给上述处理函数进行相应的处理。有利于为上述函数调用请求提供多种方式进行传递。
这样,根据获取到的业务层的函数调用请求,在上述处理函数的线程内,通过处理函数对上述函数对应的函数对象、函数类型以及函数参数分别进行有效性检测,可提高检测速度,快速将检测结果反馈到业务层。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
进一步参考图9,作为对上述图2所示方法的实现,本申请提供了一种提高应用程序稳定性的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图9所示,本实施例所述的提高应用程序稳定性的装置900包括:第一检测模块901、第二检测模块902、第三检测模块903以及响应模块904。其中:
第一检测模块901,用于根据获取到的业务层的函数调用请求,对所述函数调用请求中与函数对应的函数对象进行有效性检测;
第二检测模块902,用于若对所述函数对象有效性检测通过,则在所述函数对象中,对所述函数的函数类型进行有效性检测;
第三检测模块903,用于若对所述函数类型有效性检测通过,则获取与所述函数对应的函数参数,对所述函数参数进行有效性检测;
响应模块904,用于若所述函数参数有效性检测通过,则调用所述函数对所述函数调用请求进行相应的响应。
进一步的,如图10所示,上述装置900还可以包括:拦截模块905、发送模块906。其中,
拦截模块905用于若对所述函数调用请求的多级有效性检测未通过,则函数调用异常,并拦截函数调用生成异常信息;
发送模块906用于将所述异常信息发送到业务层。
进一步的,如图11所示,为第一检测模块901的一种具体实施方式的结构示意图,第一检测模块901可以包括:第一判断子模块9011、检测子模块9012、第一生成子模块9013。其中,
第一判断子模块9011用于判断所述函数对象是否加载到对应内存地址中;
检测子模块9012用于若所述函数对象未加载到对应的内存地址中,则检测所述函数对象是否存在于项目层中对应的模块上;
第一生成子模块9013用于若所述函数对象不存在于所述项目层中对应的模块上,则所述函数对象有效性检测未通过,拦截函数调用,生成一级异常消息并发送到业务层。
进一步的,如图12所示,为第二检测模块902的一种具体实施方式的结构示意图,第二检测模块902可以包括:获取子模块9021、查找子模块9022、第二生成子模块9023。其中,
获取子模块9021用于在所述函数对象中获取属性列表和函数列表;
查找子模块9022用于根据所述函数类型,在所述属性列表和/或函数列表中进行查找;
第二生成子模块9023用于若在所述属性列表和/或函数列表中未查找到调用的函数,则生成二级异常消息并发送到业务层。
进一步的,如图13所示,为第三检测模块903的一种具体实施方式的结构示意图,第三检测模块903可以包括:第二判断子模块9031、第三判断子模块9032、第四判断子模块9033以及第三生成子模块9034。其中,
第二判断子模块9031用于获取所述调用的函数的传入参数个数,判断所述参数个数是否与预先设置的参数个数一致;
第三判断子模块9032用于若所述参数个数与预先设置的参数个数一致,则获取所述调用的函数的传入参数类型,判断所述参数类型是否与预先设置的参数类型一致;和/或
第四判断子模块9033用于若所述参数类型与预先设置的参数类型一致,则获取所述调用的函数的传入参数位置,判断所述参数位置是否与预先设置的参数位置一致;
第三生成子模块9034用于若对所述参数个数和/或参数类型和/或参数位置的检测有任意一项不一致,则生成三级异常消息并发送到业务层。
进一步的,如图14所示,上述装置900还可以包括:匹配模块907、生成模块908。其中,
匹配模块907用于根据不同的异常信息的类型,匹配对应的可执行请求方案;以及
生成模块908用于根据所述对应的可执行请求方案生成报告信息,将所述报告信息发送给所述业务层。
进一步的,如图15所示,为第一检测模块901的另一种具体实施方式的结构示意图,第一检测模块901还可以包括:接收子模块9014、传递子模块9015。其中,
接收子模块9014用于接收业务层发送的所述函数调用请求;
传递子模块9015用于将获取到的所述函数调用请求通过系统层传递给处理函数。
本申请实施例提供的提高应用程序稳定性的装置能够实现图2至图8的方法实施例中的各个实施方式,以及相应有益效果,为避免重复,这里不再赘述。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图16,图16为本实施例计算机设备基本结构框图。
所述计算机设备16括通过系统总线相互通信连接存储器161、处理器162、网络接口163。需要指出的是,图中仅示出了具有组件161-163的计算机设备16,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与客户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器161至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器161可以是所述计算机设备16的内部存储单元,例如该计算机设备16的硬盘或内存。在另一些实施例中,所述存储器161也可以是所述计算机设备16的外部存储设备,例如该计算机设备16上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器161还可以既包括所述计算机设备16的内部存储单元也包括其外部存储设备。本实施例中,所述存储器161通常用于存储安装于所述计算机设备16的操作系统和各类应用软件,例如提高应用程序稳定性的方法的程序代码等。此外,所述存储器161还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器162在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器162通常用于控制所述计算机设备16的总体操作。本实施例中,所述处理器162用于运行所述存储器161中存储的程序代码或者处理数据,例如运行所述提高应用程序稳定性的方法的程序代码。
所述网络接口163可包括无线网络接口或有线网络接口,该网络接口163通常用于在所述计算机设备16与其他电子设备之间建立通信连接。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有提高应用程序稳定性的程序,上述提高应用程序稳定性的程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的提高应用程序稳定性的方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的提高应用程序稳定性的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。
Claims (7)
1.一种提高应用程序稳定性的方法,其特征在于,包括下述步骤:
根据获取到的业务层的函数调用请求,对所述函数调用请求中与函数对应的函数对象进行有效性检测;
若对所述函数对象有效性检测通过,则在所述函数对象中,对所述函数的函数类型进行有效性检测;
若对所述函数类型有效性检测通过,则获取与所述函数对应的函数参数,对所述函数参数进行有效性检测;
若所述函数参数有效性检测通过,则调用所述函数对所述函数调用请求进行相应的响应;
所述对所述函数调用请求中与函数对应的函数对象进行有效性检测的步骤具体包括下述步骤:
判断所述函数对象是否加载到对应内存地址中;
若所述函数对象未加载到对应的内存地址中,则检测所述函数对象是否存在于项目层中对应的模块上;
若所述函数对象不存在于所述项目层中对应的模块上,则所述函数对象有效性检测未通过,拦截函数调用,生成一级异常消息并发送到业务层;
所述对所述函数的函数类型进行有效性检测的步骤具体包括下述步骤:
在所述函数对象中获取属性列表和函数列表;
根据所述函数类型,在所述属性列表和/或函数列表中进行查找,若所述函数类型为set函数或get函数时,则优先在所述属性列表中查找所述函数类型再到所述函数列表中查找所述函数类型,若所述函数类型不是set函数或get函数时,则在所述属性列表以及所述函数列表中同时或先后查找所述函数类型;
若在所述属性列表和/或函数列表中未查找到调用的函数,则生成二级异常消息并发送到业务层;
所述对所述函数参数进行有效性检测的步骤具体包括下述步骤:
获取所述调用的函数的传入参数个数,判断所述参数个数是否与预先设置的参数个数一致;
若所述参数个数与预先设置的参数个数一致,则获取所述调用的函数的传入参数类型,判断所述参数类型是否与预先设置的参数类型一致;和/或
若所述参数类型与预先设置的参数类型一致,则获取所述调用的函数的传入参数位置,判断所述参数位置是否与预先设置的参数位置一致;
若对所述参数个数和/或参数类型和/或参数位置的检测有任意一项不一致,则生成三级异常消息并发送到业务层。
2.根据权利要求1所述的提高应用程序稳定性的方法,其特征在于,所述方法还包括下述步骤:
若对所述函数调用请求的任意一级有效性检测未通过,则函数调用异常,并拦截函数调用生成异常信息;
将所述异常信息发送到业务层。
3.根据权利要求1任一所述的提高应用程序稳定性的方法,其特征在于,所述方法还包括下述步骤:
根据不同的异常信息的类型,匹配对应的可执行请求方案;以及
根据所述对应的可执行请求方案生成报告信息,将所述报告信息发送给所述业务层。
4.根据权利要求1所述的提高应用程序稳定性的方法,其特征在于,所述获取到的业务层的函数调用请求的步骤具体包括:
接收业务层发送的所述函数调用请求;
将获取到的所述函数调用请求通过系统层传递给处理函数。
5.一种提高应用程序稳定性的装置,其特征在于,所述提高应用程序稳定性的装置用于实现如权利要求1至4中任一项所述的提高应用程序稳定性的方法的步骤,所述提高应用程序稳定性的装置包括:
第一检测模块,用于根据获取到的业务层的函数调用请求,对所述函数调用请求中与函数对应的函数对象进行有效性检测;
第二检测模块,用于若对所述函数对象有效性检测通过,则在所述函数对象中,对所述函数的函数类型进行有效性检测;
第三检测模块,用于若对所述函数类型有效性检测通过,则获取与所述函数对应的函数参数,对所述函数参数进行有效性检测;
响应模块,用于若所述函数参数有效性检测通过,则调用所述函数对所述函数调用请求进行相应的响应。
6.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述的提高应用程序稳定性的方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4中任一项所述的提高应用程序稳定性的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910433063.9A CN110399131B (zh) | 2019-05-23 | 2019-05-23 | 提高应用程序稳定性的方法、装置、计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910433063.9A CN110399131B (zh) | 2019-05-23 | 2019-05-23 | 提高应用程序稳定性的方法、装置、计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110399131A CN110399131A (zh) | 2019-11-01 |
CN110399131B true CN110399131B (zh) | 2024-04-26 |
Family
ID=68324105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910433063.9A Active CN110399131B (zh) | 2019-05-23 | 2019-05-23 | 提高应用程序稳定性的方法、装置、计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110399131B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813414A (zh) * | 2020-06-09 | 2020-10-23 | 珠海格力电器股份有限公司 | 函数的检测方法、装置、计算机设备和存储介质 |
CN112084110B (zh) * | 2020-09-08 | 2024-05-28 | 北京百度网讯科技有限公司 | 数据处理方法、装置、设备以及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949187A (zh) * | 2006-11-17 | 2007-04-18 | 深圳市领测科技有限公司 | 一种程序调测系统及方法 |
KR20100089256A (ko) * | 2009-02-03 | 2010-08-12 | 주식회사 안철수연구소 | 응용 프로그램 패치 장치 및 방법 |
KR101432712B1 (ko) * | 2013-03-05 | 2014-08-25 | 충북대학교 산학협력단 | 소프트웨어 안전성 향상을 위한 코드 리팩토링 방법 |
CN105468509A (zh) * | 2014-09-04 | 2016-04-06 | 阿里巴巴集团控股有限公司 | 代码稳定性检测方法及装置 |
CN106657250A (zh) * | 2016-10-24 | 2017-05-10 | 深圳有麦科技有限公司 | 一种提高应用程序稳定性的方法及其系统 |
CN106844151A (zh) * | 2017-01-04 | 2017-06-13 | 南京国电南自电网自动化有限公司 | 一种VxWorks系统的网络任务异常检测方法 |
CN109298960A (zh) * | 2018-08-15 | 2019-02-01 | 中国平安人寿保险股份有限公司 | 应用崩溃处理方法、装置、计算机装置及存储介质 |
CN109634816A (zh) * | 2018-11-27 | 2019-04-16 | 平安科技(深圳)有限公司 | 应用管理方法及终端设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929656B (zh) * | 2012-09-28 | 2015-11-25 | 北京奇虎科技有限公司 | 使用浏览器中内置ActiveX插件的方法和客户端 |
EP2787437A1 (de) * | 2013-04-03 | 2014-10-08 | Realtime Technology AG | Verfahren zur Überprüfung und/oder Transformation eines Computerprogramms mit statischen Funktionen erster Klasse |
EP3090375A4 (en) * | 2013-12-30 | 2017-08-30 | Nokia Technologies Oy | Method and apparatus for malware detection |
-
2019
- 2019-05-23 CN CN201910433063.9A patent/CN110399131B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949187A (zh) * | 2006-11-17 | 2007-04-18 | 深圳市领测科技有限公司 | 一种程序调测系统及方法 |
KR20100089256A (ko) * | 2009-02-03 | 2010-08-12 | 주식회사 안철수연구소 | 응용 프로그램 패치 장치 및 방법 |
KR101432712B1 (ko) * | 2013-03-05 | 2014-08-25 | 충북대학교 산학협력단 | 소프트웨어 안전성 향상을 위한 코드 리팩토링 방법 |
CN105468509A (zh) * | 2014-09-04 | 2016-04-06 | 阿里巴巴集团控股有限公司 | 代码稳定性检测方法及装置 |
CN106657250A (zh) * | 2016-10-24 | 2017-05-10 | 深圳有麦科技有限公司 | 一种提高应用程序稳定性的方法及其系统 |
CN106844151A (zh) * | 2017-01-04 | 2017-06-13 | 南京国电南自电网自动化有限公司 | 一种VxWorks系统的网络任务异常检测方法 |
CN109298960A (zh) * | 2018-08-15 | 2019-02-01 | 中国平安人寿保险股份有限公司 | 应用崩溃处理方法、装置、计算机装置及存储介质 |
CN109634816A (zh) * | 2018-11-27 | 2019-04-16 | 平安科技(深圳)有限公司 | 应用管理方法及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110399131A (zh) | 2019-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200143051A1 (en) | Security scanning method and apparatus for mini program, and electronic device | |
US9417938B2 (en) | Remote procedure call chains | |
CN105573733A (zh) | 浏览器与web前端通信的方法、web前端及系统 | |
CN113254445B (zh) | 实时数据存储方法、装置、计算机设备及存储介质 | |
CN110399131B (zh) | 提高应用程序稳定性的方法、装置、计算机设备 | |
EP3361407A1 (en) | System and method for performing antivirus scan of a web page | |
CN112597020A (zh) | 接口测试方法、装置、计算机设备及存储介质 | |
CN112631924A (zh) | 自动化测试方法、装置、计算机设备及存储介质 | |
CN111124801B (zh) | 智能化系统资源监控方法、装置及计算机可读存储介质 | |
CN110704131B (zh) | 一种html5应用调用原生应用的方法和装置 | |
CN116661936A (zh) | 页面数据的处理方法、装置、计算机设备及存储介质 | |
CN116112457A (zh) | 消息通知的方法、装置、计算机设备及存储介质 | |
CN114968822A (zh) | 接口测试方法、装置、计算机设备及存储介质 | |
CN114615325A (zh) | 消息推送方法、装置、计算机设备及存储介质 | |
CN115328764A (zh) | 基于自动化测试的测试代码优化方法及其相关设备 | |
CN107644043B (zh) | 网银快捷导航设置方法及系统 | |
CN114791996B (zh) | 信息处理方法、装置、系统、电子设备及存储介质 | |
US20210274017A1 (en) | Request processing method and apparatus, electronic device, and computer storage medium | |
CN118170613A (zh) | 应用程序闪退处理方法、装置、计算机设备和存储介质 | |
CN116303486A (zh) | 前端操作拦截处理方法、装置、计算机设备及存储介质 | |
CN117278623A (zh) | 请求数据的处理方法、装置、计算机设备及存储介质 | |
CN117278298A (zh) | 基于人工智能的域名检测方法、装置、设备及存储介质 | |
CN115080045A (zh) | 链路生成方法、装置、计算机设备及存储介质 | |
CN116243920A (zh) | 一种前端性能优化方法、系统、计算机设备及存储介质 | |
CN117395309A (zh) | 数据上报方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |