CN116932362A - 一种应用程序检测方法、装置、电子设备和存储介质 - Google Patents

一种应用程序检测方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN116932362A
CN116932362A CN202210328231.XA CN202210328231A CN116932362A CN 116932362 A CN116932362 A CN 116932362A CN 202210328231 A CN202210328231 A CN 202210328231A CN 116932362 A CN116932362 A CN 116932362A
Authority
CN
China
Prior art keywords
detected
program
application program
running
root factor
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
Application number
CN202210328231.XA
Other languages
English (en)
Inventor
李明浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210328231.XA priority Critical patent/CN116932362A/zh
Publication of CN116932362A publication Critical patent/CN116932362A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及计算机技术领域,尤其涉及一种应用程序检测方法、装置、电子设备和存储介质,用以提高应用程序检测的效率。在确定前台运行的应用程序发生异常事件时,将导致异常事件的根因子程序的标识信息发送给应用程序关联的服务器;接收服务器基于标识信息发送的至少一个待检测对象的配置信息;在应用程序继续运行的过程中,当再次调用到根因子程序时执行以下操作:每检测一个待检测对象,获得相应的包含根因子程序的运行状态指标的检测结果,并将检测结果发送给服务器进行纠错分析。由于只需要对服务器下发的至少一个待检测对象进行检测并获取相应的检测结果,可以较大提高应用程序的检测效率。

Description

一种应用程序检测方法、装置、电子设备和存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种应用程序检测方法、装置、电子设备和存储介质。
背景技术
随着科技的不断发展,终端的配置也越来越高,随之而来实现各种功能的应用程序也越来越多。目前,终端通常会安装很多应用程序,以提供给用户更便捷的工作、生活平台。
应用程序在运行过程中,通过调用应用程序代码中的方法函数来实现应用程序的功能,每个应用程序在实现对应的功能时都需要调用大量的方法函数。为了保证应用程序上线后正常稳定运行,在应用程序发布之前会对应用程序的性能进行测试。具体测试方式可以为,通过对应用程序调用的所有方法函数设置钩子,获取所有方法函数的运行状态数据,基于所有方法函数的运行状态数据分析应用程序的性能。
但是在应用程序发布之后,在对象使用该应用程序过程中应用程序发生异常卡顿,若使用现有对应用程序进行检测的方式,对应用程序中所有方法函数设置钩子获取应用程序中所有方法函数的运行状态数据,由于设置钩子之后的方法函数除了要执行保证应用程序正常运行的功能之外,还要执行额外的操作,将严重影响应用程序的整体运行性能。因此,目前亟需一种有效的对应用程序进行检测的方案。
发明内容
本申请实施例提供一种应用程序检测方法、装置、电子设备和存储介质,用以提高应用程序检测的效率。
本申请实施例提供的一种应用程序检测方法,包括:
在确定前台运行的应用程序发生异常事件时,将导致所述异常事件的根因子程序的标识信息发送给所述应用程序关联的服务器;其中,所述应用程序包括多个子程序,所述根因子程序为所述应用程序运行过程中被反复调用的基础程序;
接收所述服务器基于所述标识信息发送的至少一个待检测对象的配置信息;每个待检测对象表征所述根因子程序的一种运行状态指标;
在所述应用程序继续运行的过程中,当再次调用到所述根因子程序时,执行以下操作:分别检测所述至少一个待检测对象,其中,每检测一个待检测对象,获得相应的包含所述根因子程序的运行状态指标的检测结果,并将所述检测结果发送给所述服务器进行纠错分析。
本申请实施例提供的另一种应用程序检测方法,包括:
接收终端发送的根因子程序的标识信息;其中,所述根因子程序导致在所述终端的前台运行的应用程序发生异常事件,所述应用程序包括多个子程序,所述根因子程序为所述应用程序运行过程中被反复调用的基础程序;
根据不同类型子程序与待检测对象之间的映射关系,以及所述根因子程序的标识信息,确定与所述根因子程序对应的至少一个待检测对象;每个待检测对象表征所述根因子程序的一种运行状态指标;
将所述至少一个待检测对象的配置信息发送给所述终端,以使所述终端在所述应用程序继续运行的过程中,在再次调用到所述根因子程序时,分别检测所述至少一个待检测对象,以获得每个待检测对象对应的包含所述根因子程序的运行状态指标的检测结果;
接收所述终端发送的各个检测对象对应的检测结果,并基于各个检测对象对应的检测结果进行纠错分析。
本申请实施例提供的一种应用程序检测装置,包括:
信息发送单元,用于在确定前台运行的应用程序发生异常事件时,将导致所述异常事件的根因子程序的标识信息发送给所述应用程序关联的服务器;其中,所述应用程序包括多个子程序,所述根因子程序为所述应用程序运行过程中被反复调用的基础程序;
信息接收单元,用于接收所述服务器基于所述标识信息发送的至少一个待检测对象的配置信息;每个待检测对象表征所述根因子程序的一种运行状态指标;
程序执行单元,用于在所述应用程序继续运行的过程中,当再次调用到所述根因子程序时,执行以下操作:分别检测所述至少一个待检测对象,其中,每检测一个待检测对象,获得相应的包含所述根因子程序的运行状态指标的检测结果,并将所述检测结果发送给所述服务器进行纠错分析。
本申请实施例提供的另一种应用程序检测装置,包括:
信息接收单元,用于接收终端发送的根因子程序的标识信息;其中,所述根因子程序导致在所述终端的前台运行的应用程序发生异常事件,所述应用程序包括多个子程序,所述根因子程序为所述应用程序运行过程中被反复调用的基础程序;
确定单元,用于根据不同类型子程序与待检测对象之间的映射关系,以及所述根因子程序的标识信息,确定与所述根因子程序对应的至少一个待检测对象;每个待检测对象表征所述根因子程序的一种运行状态指标;
信息发送单元,用于将所述至少一个待检测对象的配置信息发送给所述终端,以使所述终端在所述应用程序继续运行的过程中,在再次调用到所述根因子程序时,分别检测所述至少一个待检测对象,以获得每个待检测对象对应的包含所述根因子程序的运行状态指标的检测结果;
检测结果接收单元,用于接收所述终端发送的各个检测对象对应的检测结果,并基于各个检测对象对应的检测结果进行纠错分析。
本申请实施例提供的一种电子设备,包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行上述任意一种应用程序检测方法的步骤。
本申请实施例提供一种计算机可读存储介质,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使所述电子设备执行上述任意一种应用程序检测方法的步骤。
本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序存储在计算机可读存储介质中;当电子设备的处理器从所述计算机可读存储介质读取所述计算机程序时,所述处理器执行所述计算机程序,使得所述电子设备执行上述任意一种应用程序检测方法的步骤。
本申请有益效果如下:
本申请实施例提供一种应用程序检测方法、装置、电子设备和存储介质。在本申请实施例中,在前台运行的应用程序发生异常事件时,将导致异常事件的根因子程序的标识信息发送给服务器;服务器下发针对该根因子程序的至少一个待检测对象的配置信息;在应用程序继续运行的过程中,当再次调用到该根因子程序,检测各个待检测对象,获取各个待检测对象对应的检测结果;将各个待检测对象的检测结果发送服务器进行纠错分析。由于本申请实施例在应用程序发生异常事件时,只需要对服务器下发的至少一个待检测对象进行检测并获取相应的检测结果,从而有针对性的对与异常事件相关的部分待检测对象进行检测,可以最大化的减少对应用程序执行正常操作的影响,并且相比线下通过对应用程序所有对象进行检测的方式,可以较大提高应用程序的检测效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例中的一种可选的应用场景示意图;
图2为本申请实施例中的一种应用程序检测方法的实施流程图;
图3为本申请实施例中的音视频播放应用的显示界面示意图;
图4为本申请实施例中的即时通信应用的显示界面示意图;
图5为本申请实施例中的将至少一个待检测对象存入预设数据结构的堆栈方法的实施流程图;
图6为本申请实施例中的一种应用程序检测的逻辑示意图;
图7为本申请实施例将至少一个待检测函数存入预设数据结构的堆栈方法的实施流程图;
图8为本申请实施例中的将待检测函数存入堆栈的示意图;
图9为本申请实施例中的各个函数之间的调用关系信息示意图;
图10为本申请实施例中的另一种应用程序检测的逻辑示意图;
图11为本申请实施例中的应用程序检测流程的逻辑示意图;
图12为本申请实施例中的一种应用程序检测的整体流程图;
图13为本申请实施例中的终端设备侧的应用程序检测方法流程图;
图14为本申请实施例中的服务器侧的应用程序检测方法流程图;
图15为本申请实施例中的一种应用程序检测装置的结构示意图;
图16为本申请实施例中的另一种应用程序检测装置的结构示意图;
图17为本申请实施例中的一种电子设备的结构示意图;
图18为本申请实施例中的一种计算装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
下面对本申请实施例中涉及的部分概念进行介绍。
函数:是一个固定的一个程序段,或称其为一个子程序;函数是定义在类中的一段独立的代码块,用来实现某个功能。函数又可以称为方法,函数的主要作用是为了提高代码的复用性。在可以实现固定运算功能的同时,还带有一个入口和一个出口;入口为函数所带的各个参数,可以通过这个入口,将函数的参数值代入子程序,供计算机处理;出口为函数的函数值,在计算机得到函数值之后,由此出口返回给调用它的程序。
Hook:指在应用程序运行时,对应用程序中调用的函数设置一个钩子,用自定义的函数来代替被hook的函数。
堆栈:是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的。堆栈是一种特殊的数据结构,所有的数据存入或取出,只能在浮动的一端(称栈顶)进行,严格按照“先进后出”的原则存取,位于其中间的元素,必须在其栈上部(后进栈者)诸元素逐个移出后才能取出。在内存储器(随机存储器)中开辟一个区域作为堆栈,叫软件堆栈;用寄存器构成的堆栈,叫硬件堆栈。
线上:指应用程序发布后,真实用户使用应用程序的场景。
线下:指应用程序发布之前,开发人员开发、调试使用应用程序的场景。
应用程序:可以指软件类的APP(Application,应用程序)。它具有可视的显示界面,能与用户进行交互;是与服务器相对应,为客户提供本地服务。针对软件类的应用程序,除了一些只在本地运行的应用程序之外,一般安装在普通的客户终端上,需要与服务端互相配合运行。因特网发展以后,较常用的应用程序包括了如收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端等。对于这一类应用程序,需要网络中有相应的服务器和服务程序来提供相应的服务,如数据库服务,配置参数服务等,这样在客户终端和服务器端,需要建立特定的通信连接,来保证应用程序的正常运行。
服务器:可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
终端设备:又称为用户设备(User Equipment,UE)、移动台(Mobile Station,MS)、移动终端(Mobile Terminal,MT)等,是一种向用户提供语音和/或数据连通性的设备,例如,具有无线连接功能的手持式设备、车载设备等。目前,一些终端的举例为:手机(mobilephone)、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(Mobile Internet Device,MID)。
下面对本申请实施例的设计思想进行简要介绍:
一个应用程序的运行,需要调用并运行应用程序代码中大量的方法函数,以实现应用程序复杂的功能。在应用程序上线之前,会在线下对应用程序的性能进行多次检测;一种常见的线下检测应用程序的方式为对应用程序运行过程中需要调用并运行的方法函数设置钩子,通过hook所有方法函数的方式,获取各个方法函数的运行数据,基于所有方法函数的运行数据分析应用程序的性能。在应用程序上线之后,在对象使用应用程序的过程中,应用程序不可避免发生异常;但是若沿用应用程序上线之前的检测方式,需要hook所有的方法函数,由于设置钩子之后的方法函数除了要执行保证应用程序正常运行的功能之外,还要执行额外的操作,将严重影响应用程序的整体运行性能。
有鉴于此,本申请实施例提供一种线上对应用程序进行检测的方案,在前台运行的应用程序发生异常事件时,将导致异常事件的根因子程序的标识信息发送给服务器;服务器下发针对该根因子程序的至少一个待检测对象的配置信息;在应用程序继续运行的过程中,当再次调用到该根因子程序,检测各个待检测对象,获取各个待检测对象对应的检测结果;将各个待检测对象的检测结果发送服务器进行纠错分析。由于本申请实施例在应用程序发生异常事件时,只需要对服务器下发的至少一个待检测对象进行检测并获取相应的检测结果,从而有针对性的对与异常事件相关的部分待检测对象进行检测,可以最大化的减少对应用程序执行正常操作的影响,并且相比线下通过对应用程序所有对象进行检测的方式,可以较大提高应用程序的检测效率。
如图1所示,本申请实施例一种可选的应用场景示意图。该应用场景图中包括终端设备10和服务器11;其中终端设备10可以对应于一个操作对象,操作对象可以通过操作终端设备10登录应用程序,在终端设备10的操作界面中显示应用程序的相关界面。其中,服务器11为与终端设备10中登录的应用程序关联的服务器。终端设备10与服务器11之间可以通过通信网络进行通信。
在一种可选的实施方式中,通信网络是有线网络或无线网络。
在本申请实施例中,终端设备10为操作对象使用的电子设备,该电子设备可以是手机、平板电脑、笔记本电脑、台式电脑、电子书阅读器、智能语音交互设备、智能家电、车载终端等具有一定计算能力并且运行有即时通讯类软件及网站或者社交类软件及网站的计算机设备。各终端设备10通过无线网络与服务器11连接,服务器11可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
在一种可选的实施方式中,终端设备10与服务器11之间可以通过通信网络进行通信。
在一种可选的实施方式中,通信网络是有线网络或无线网络。
需要说明的是,上述一个终端设备只是举例说明,在本申请实施例中实际一般可涉及若干终端设备。并且,终端设备10上可以安装有各种客户端应用,例如软件开发类应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件、音视频播放应用等。
需要说明的是,本申请实施例所提供的应用程序检测方法可以由终端设备10和服务器11共同执行;例如,终端设备10在确定前台运行的应用程序发生异常事件时,将导致异常事件的根因子程序的标识信息发送给服务器11;服务器11确定根因子程序对应的至少一个待检测对象,并将至少一个待检测对象的配置信息发送给终端设备10;终端设备10在应用程序继续运行的过程中,当再次调用到根因子程序时,分别检测至少一个待检测对象,每检测一个待检测对象,获得相应的包含根因子程序的运行状态指标的检测结果,并将检测结果发送给服务器11,服务器11基于至少一个待检测对象的检测结果进行纠错分析。
本申请实施例中,当服务器的数量为多个时,多个服务器可组成为一区块链,而服务器为区块链上的节点;如本申请实施例所公开的应用程序检测方法,其中所涉及的标识信息、配置信息、运行状态指标、检测结果等都可保存于区块链上。
此外,本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等场景。
下面结合上述描述的应用场景,参考附图来描述本申请示例性实施方式提供的应用程序检测方法,需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。
参阅图2所示,其为本申请实施例提供的一种应用程序检测方法的实施流程图,该方法的具体实施流程如下:
步骤S201、终端设备在确定前台运行的应用程序发生异常事件时,确定导致异常事件的根因子程序;
其中,一个应用程序包括多个子程序,根因子程序为应用程序运行过程中被反复调用的基础程序。
在本申请实施例中,在应用程序发生异常事件时,将该应用程序包括的多个子程序中导致该异常事件的子程序称为根因子程序。
另外,本申请实施例中的应用程序的子程序又可以称为模块,且该模块是基于应用程序的功能进行划分的。
需要说明的是,应用程序在运行过程中通过调用根因子程序实现特定功能;由于本申请实施例中应用程序发生异常事件并不会停止运行该应用程序,在继续运行应用程序中可能会反复调用该根因子程序,以实现该根因子程序能够实现的功能。
本申请实施例应用程序发生的异常事件可以为多种类型的事件,例如异常事件可以为应用程序异常退出、应用程序异常卡顿等;
假设应用程序为音视频播放应用,在音视频播放应用运行过程中,音视频播放应用可能发生异常卡顿事件;如图3所示的音视频播放应用的显示界面,音视频播放应用在运行过程中发生异常卡顿。
终端设备在确定导致异常事件的根因子程序时,可以采用下列方式:
方式1、终端设备确定应用程序发生异常事件时,确定该应用程序正在调用的子程序,将当前正在调用的子程序作为根因子程序;
方式2、终端设备确定应用程序发生异常事件时,获取操作对象输入的反馈信息,根据操作对象的反馈信息,确定导致异常事件的根因子程序;
针对方式2,实施中,在应用程序发生异常事件后,可以在应用程序的显示界面中显示信息输入区域,操作对象可以通过该信息输入区域反馈出现异常事件的相关信息;例如如图4所示,假设应用程序为即时通信应用,操作对象在通过输入法键盘输入文本时即时通信应用发生异常卡顿事件,在即时通信应用的显示界面中显示弹窗,操作对象可以在弹窗中反馈出现异常事件的相关信息,例如操作对象输入“调用输入法发生异常卡顿”。
终端设备在获取到操作对象的反馈信息后,基于操作对象反馈的信息确定导致异常事件的根因子程序。
步骤S202、终端设备将导致异常事件的根因子程序的标识信息发送给应用程序关联的服务器;
需要说明的是,本申请实施例应用程序的每个子程序对应一个标识信息,例如输入法子程序对应的标识信息为“02”;在终端设备确定出发生异常事件的根因子程序之后,将根因子程序的标识信息发送给与应用程序关联的服务器,以使服务器基于标识信息确定终端设备中发送异常事件的根因子程序。
步骤S203、服务器根据不同类型子程序与待检测对象之间的映射关系,以及根因子程序的标识信息,确定与根因子程序对应的至少一个待检测对象;
本申请实施例,服务器存储有不同类型子程序与待检测对象之间的映射关系;其中待检测对象是子程序运行过程中执行的对象,且可以用于检测子程序性能;
例如,待检测对象可以为程序运行过程中调用的方法函数。
其中,一个子程序可以对应于至少一个待检测对象;一个子程序与至少一个检测对象的映射关系表示,至少一个检测对象在执行过程中的执行状态可以用于反映对应子程序的性能;因此,服务器在接收到终端设备发送的标识信息后,确定与该标识信息对应的子程序导致异常事件,则服务器确定该子程序对应的至少一个待检测对象,确定出的至少一个待检测对象可以用于对子程序的性能进行检测。
服务器接收到根因子程序的标识信息后,确定与该标识信息对应的至少一个待检测对象;其中每个待检测对象表征根因子程序的一种运行状态指标。
基于此,服务器在将至少一个待检测对象的配置信息发送给终端设备之后,终端设备分别检测至少一个待检测对象,从而得到导致应用程序发生异常事件的具体原因。
步骤S204、服务器将至少一个待检测对象的配置信息发送给终端设备。
步骤S205、终端设备在应用程序继续运行的过程中,当再次调用到根因子程序时,分别检测至少一个待检测对象,其中,每检测一个待检测对象,获得相应的包含根因子程序的运行状态指标的检测结果;
终端设备在确定前台运行的应用程序发生异常事件后,将导致该异常事件的根因子程序的标识发送给服务器之后,终端设备还是继续运行该应用程序;在继续运行应用程序过程中,还会再次调用到根因子程序;此时,终端设备根据服务器下发的至少一个待检测对象的配置信息,分别对至少一个待检测对象进行检测。
或者,终端设备在确定前台运行的应用程序发生异常事件后,退出运行该应用程序;响应操作对象触发的启动操作,再次运行该应用程序;在再次运行应用程序过程中,会再次调用到根因子程序;此时,终端设备根据服务器下发的至少一个待检测对象的配置信息,分别对至少一个待检测对象进行检测。
实施中,本申请实施例可以根据下列方式对待检测对象进行检测:
在接收服务器基于标识信息发送的至少一个待检测对象的配置信息之后,分别对至少一个待检测对象进行重定位处理;
在调用根因子程序过程中,通过调用并运行重定位后的待检测对象的方式,实现对待检测对象进行检测;
可选的,调用并运行重定位后的待检测对象,获得待检测对象对应的包含根因子程序的运行状态指标的检测结果。
实施中,对待检测对象进行重定位处理的方式可以为对待检测对象进行重命名处理;
在运行应用程序过程中,将待检测对象替换为重命名处理后的待检测对象;这样,在需要运行该待检测对象时,会调用重命名处理后的待检测对象;
针对至少一个待检测对象,在执行到重命名处理后的待检测对象时,获取该待检测对象对应的检测结果;其中,待检测对象对应的检测结果可以为执行重命名处理后的待检测对象时获取到的状态值。
需要说明的是,本申请实施例针对每一个待检测对象,在调用并运行重命名处理后的待检测对象时,均可以获取到一个待检测对象运行时的状态值,并且结合各个待检测对象运行时的状态值,可以对应用程序进行纠错分析,确定导致应用程序发生异常事件的具体原因。
实施中,本申请实施例应用程序发生的异常事件可以为异常卡顿事件,在应用程序发生异常卡顿事件后,终端设备将导致该异常卡顿事件的根因子程序的标识信息发送给服务器;在接收到服务器下发的至少一个待检测对象的配置信息后,在继续运行该应用程序过程中,通过调用并运行至少一个重命名处理后的待检测对象;针对每一个重命名处理后的待检测对象,获取每一个待检测对象的执行耗时,将待检测对象的执行耗时作为待检测对象对应的包含根因子程序的运行状态指标的检测结果。
在一种可选的实施方式中,本申请实施例可以根据下列方式获取待检测对象的执行耗时:
在调用并执行重定位处理后的待检测对象时,获得重定位后的待检测对象的运行起始时间,以及运行结束时间;根据运行起始时间和运行结束时间,确定待检测对象的执行耗时。
实施中,在获得重定位后的待检测对象的运行起始时间和运行结束时间之后,将运行结束时间和运行起始时间之间的时长作为待检测对象的执行耗时。
基于上述方式,本申请实施例终端设备可以检测到服务器下发的至少一个待检测对象中各个待检测对象对应的检测结果。
步骤S206、终端设备将至少一个待检测对象分别对应的检测结果发送给服务器进行纠错分析。
终端设备在将至少一个待检测对象分别对应的检测结果发送给服务器时,可以在获得所有待检测对象对应的检测结果之后,将所有待检测对象对应的检测结果一起发送给服务器;或者,终端设备还可以在每检测到一个待检测对象对应的检测结果之后,将检测到的一个待检测对象对应的检测结果发送给服务器。
另外,本申请实施例在进行纠错分析时,还可以基于各个待检测对象执行次数,基于各个待检测对象分别对应的检测结果以及执行次数,共同分析导致应用程序发生异常事件的具体原因。
实施中,若终端设备在获得所有待检测对象对应的检测结果之后,将所有待检测对象对应的检测结果一起发送给服务器,则终端设备需要统计每个待检测对象分别执行次数,将各个待检测对象分别对应的检测结果以及执行次数发送给服务器。若终端设备在每检测到一个待检测对象对应的检测结果之后,将检测到的一个待检测对象对应的检测结果发送给服务器,则由服务器统计每个待检测对象分别执行次数。
需要说明的是,本申请实施例服务器在获取到至少一个待检测对象分别对应的检测结果以及执行次数之后,可以基于各个待检测对象分别对应的检测结果以及执行次数分析导致应用程序发生异常事件的具体原因;或者,服务器将各个待检测对象分别对应的检测结果以及执行次数进行存储,在需要对导致应用程序发生异常事件的具体原因进行分析时,技术人员可以从服务器端获取个待检测对象分别对应的检测结果以及执行次数进行分析,从而得到导致应用程序发生异常事件的具体原因,进一步地优化应用程序。
本申请实施例在应用程序发生异常事件之后,在分析导致应用程序发生异常事件的具体原因时,还可以基于终端设备在运行应用程序过程中至少一个待检测对象之间的调用关系,更加准确的分析导致应用程序发生异常事件的具体原因。
实施中,终端设备在接收到服务器下发的至少一个待检测对象的配置信息之后,继续运行应用程序过程中,确定至少一个待检测对象中各个待检测对象之间的调用关系信息,将确定出的至少一个待检测对象中各个待检测对象之间的调用关系信息发送给服务器进行纠错分析。
一种可选的实施方式为,针对至少一个待检测对象中的任意一个待检测对象,在检测一个待检测对象时,根据一个待检测对象的配置信息,将一个待检测对象存入预设数据结构的堆栈中;根据一个待检测对象在预设数据结构的堆栈中的位置,确定一个待检测对象与至少一个待检测对象中其它检测对象之间的调用关系信息;根据每个待检测对象与至少一个待检测对象中其它待检测对象之间的调用关系信息,确定至少一个待检测对象中各个待检测对象之间的调用关系信息分析。
需要说明的是,本申请实施例预设数据结构的堆栈为先入后出的结构,且栈底为各个待检测对象需要调用的根对象。
服务器向终端设备发送的至少一个待检测对象的配置信息中,指示至少一个待检测对象中的根对象,且至少一个待检测对象中存在一个根对象。
终端设备在接收到至少一个待检测对象的配置信息之后,再继续运行应用程序的过程中,每运行一个对象,判断该对象是否为服务器下发的待检测对象,若是服务器下发的待检测对象,则将该待检测对象存入预设数据结构的堆栈中;
实施中,本申请实施例可以根据下列流程将至少一个待检测对象存入预设数据结构的堆栈中,如图5所示的流程图,具体可以包括以下步骤:
步骤S501、终端设备在接收到服务器下发的至少一个待检测对象的配置信息之后,继续运行应用程序;
步骤S502、在应用程序运行过程中,每运行一个对象,判断该对象是否为服务器下发的待检测对象,若是,执行步骤S503,若否,执行步骤S506;
步骤S503、根据待检测对象的配置信息,判断该待检测对象是否为根对象,若否,执行步骤S504,若是,执行步骤S505;
步骤S504、判断当前预设数据结构的堆栈中数据是否为空,若否,执行步骤S505,若是,执行步骤S506;
步骤S505、将待检测对象存入预设数据结构的堆栈中;
步骤S506、放弃存储待检测对象。
在根据上述方式将至少一个待检测对象入栈后,基于各个待检测对象在堆栈中的位置,可以确定至少一个待检测对象中各个待检测对象之间的调用关系信息;
例如,在预设数据结构的堆栈中,栈底为至少一个待检测对象中的根对象,堆栈中每个待检测对象的上一层即为该待检测对象的上层对象。
另外,采用上述将待检测对象入栈的方式,还可以避免非服务器下发的待检测对象调用待检测对象的情况;由于在正常运行服务器下发的至少一个待检测对象时,会优先调用根对象,则在根对象运行时优先将根对象存储至堆栈中,不会出现调用非根对象的待检测对象时堆栈为空的情形;因此基于上述步骤504,若当前预设数据结构的堆栈为空,针对不是根对象的待检测对象,不能将待检测对象入栈,从而避免非服务器下发的待检测对象调用待检测对象的情况。
需要说明的是,本申请实施例可以在运行待检测对象时,将待检测对象存入堆栈,在堆栈中获得该待检测对象的检测结果以及统计待检测对象的执行次数。
另外,在至少一个待检测对象运行完成后,将预设结构的堆栈中存储的待检测对象出栈,此时,可以将各个待检测对象的检测结果以及执行次数发送给服务器。
如图6所示的应用程序检测的逻辑示意图。终端设备确定前台运行的应用程序发生异常事件,将导致异常事件的根因子程序的标识信息发送给服务器。服务器根据根因子程序的标识信息确定至少一个待检测对象,并向终端设备下发至少一个待检测对象的配置信息,例如待检测对象1的配置信息、待检测对象2的配置信息……待检测对象n的配置信息。终端设备对各个待检测对象进行重定位处理,并获得各个待检测对象的检测结果,以及各个待检测对象之间的调用关系信息;其中,在该逻辑示意图中,终端设备获得各个待检测对象的检测结果,以及各个待检测对象之间的调用关系信息的方式可以参见上文中的描述,在此不再详细赘述。终端设备进行数据存储,存储的数据包括各个待检测对象的检测结果,以及各个待检测对象之间的调用关系信息。终端设备将存储的数据上报给服务器进行纠错分析。
下面以待检测对象为应用程序中的待检测函数、应用程序发生的异常事件为异常卡顿事件为例,介绍下本申请实施例应用程序检测流程。
终端设备在确定前台运行的应用程序发生异常卡顿事件时,确定导致异常卡顿事件的根因子程序;例如,终端设备可以将该应用程序在发生异常卡顿事件时正在调用的子程序作为根因子程序,或者终端设备获取操作对象输入的反馈信息,结合操作对象输入的反馈信息确定根因子程序。
将导致异常卡顿事件的根因子程序的标识信息发送给应用程序关联的服务器;服务器根据不同类型子程序与待检测函数之间的映射关系,以及根因子程序的标识信息,确定与根因子程序对应的至少一个待检测函数;
由于应用程序运行过程中需要调用大量的函数以实现应用程序的功能,在应用程序发生异常卡顿事件后,由终端设备首先确定可能导致异常卡顿事件的根因子程序并通知服务器,服务器基于终端设备上报的根因子程序的标识信息,确定分析导致该根因子程序异常卡顿事件需要参考的函数,将这些函数作为待检测函数,并将至少一个待检测函数的配置信息发送给终端设备。
终端设备在接收到至少一个待检测函数的配置信息后,由于在继续运行该应用程序的过程中需要执行待检测函数,终端设备在继续运行该应该程序过程中,对执行的待检测函数进行检测,获取待检测函数的检测结果;
实施中,终端设备可以通过对待检测函数设置钩子的方式获取待检测函数的检测结果;
在一种可选的实施方式中,对服务器下发的至少一个待检测函数进行重命名处理;其中,重命名处理的方式包括对待检测函数的函数名增加前缀和/或增加下划线等方式。
使用重命名之后的待检测函数替换原来的待检测函数;例如,通过forwardInvocation将待检测函数的实现替换为重命名之后的待检测函数,这样,在应用程序运行过程中,在查找不到待检测函数时,forwardInvocation的作用会触发通过间接的方式调用重命名之后的待检测函数。
在应用程序运行过程中,通过执行重命名之后的函数对待检测函数进行检测;本申请实施例若执行到重命名之后的待检测函数,可以通过Invocation来触发重命名之后的待检测函数,获得待检测函数的检测结果。
需要说明的是,通过执行重命名之后的待检测函数,可以在实现待检测函数相应功能的同时,获取到待检测函数的检测结果。
本申请实施例待检测函数的检测结果包括函数的执行耗时和函数的执行次数;
实施中,在将待检测函数重命名之后,在应用程序运行过程中,在开始执行重命名处理后的待检测函数时,获取待检测函数运行起始时间,以及在结束执行重命名处理后的待检测函数时,获取待检测函数运行结束时间;根据运行起始时间和运行结束时间之间的时长作为待检测函数的执行耗时。并在结束执行重命名处理后的待检测函数后,更新待检测函数的执行次数。
本申请实施例在执行到重命名之后的待检测函数时,将重命名之后的待检测函数存入预设数据结构的堆栈中;
一种可选的实施方式为,针对至少一个待检测函数中的任意一个待检测函数,在执行到重命名之后的待检测函数时,根据一个待检测函数的配置信息,将待检测函数存入预设数据结构的堆栈中;根据一个待检测函数在预设数据结构的堆栈中的位置,确定一个待检测函数与至少一个待检测函数中其它待检测函数之间的调用关系信息;根据每个待检测函数与至少一个待检测对象中其它待检测函数之间的调用关系信息,确定至少一个待检测函数中各个待检测函数之间的调用关系信息分析。
需要说明的是,本申请实施例预设数据结构的堆栈为先入后出的结构,且栈底为各个待检测函数需要调用的根函数。
服务器向终端设备发送的至少一个待检测函数的配置信息中,指示至少一个待检测函数中的根函数,且至少一个待检测函数中存在一个根函数。
终端设备在接收到至少一个待检测函数的配置信息之后,再继续运行应用程序的过程中,每运行一个函数,判断该函数是否为服务器下发的待检测函数,若是服务器下发的待检测函数,则将该待检测函数存入预设数据结构的堆栈中;
实施中,本申请实施例可以根据下列流程将至少一个待检测函数存入预设数据结构的堆栈中,如图7所示的流程图,具体可以包括以下步骤:
步骤S701、终端设备在接收到服务器下发的至少一个待检测函数的配置信息之后,继续运行应用程序;
步骤S702、在应用程序运行过程中,每运行一个函数,判断该函数是否为服务器下发的待检测函数,若是,执行步骤S703,若否,执行步骤S706;
步骤S703、根据待检测函数的配置信息,判断该待检测函数是否为根函数,若否,执行步骤S704,若是,执行步骤S705;
步骤S704、判断当前预设数据结构的堆栈中数据是否为空,若否,执行步骤S705,若是,执行步骤S706;
步骤S705、将待检测函数存入预设数据结构的堆栈中;
步骤S706、放弃存储待检测函数。
需要说明的是,在步骤S705中,将待检测函数存储预设数据结构的堆栈中之后,执行上述确定该待检测函数的执行耗时的步骤,以及更新待检测函数的执行次数;
在将服务器下发的各个待检测函数入栈后,基于各个待检测函数在堆栈中的位置,可以确定至少一个待检测函数中各个待检测函数之间的调用关系信息。
需要说明的是,针对一个待检测函数,若该待检测函数在应用程序运行过程中执行多次,则该待检测函数的执行耗时可以为多次执行时执行耗时的均值。
例如,在预设数据结构的堆栈中,栈底为至少一个待检测函数中的根函数,堆栈中每个待检测函数的上一层即为该待检测函数的上层函数。
例如,假设服务器下发的多个待检测函数包括函数A、函数B、函数C、函数D;且服务器下发的多个待检测函数的配置信息中指示函数A为根函数。在应用程序运行过程中调用到函数A时,确定函数A为根函数,则将函数A存入堆栈中;如图8所示。在应用程序继续运行过程中调用到函数B,确定函数B不是根函数且此时堆栈中数据不为空,则将函数B存入堆栈中;在应用程序继续运行过程中调用到函数C,确定函数C不是根函数且此时堆栈中数据不为空,则将函数C存入堆栈中;在应用程序继续运行过程中调用到函数D,确定函数D不是根函数且此时堆栈中数据不为空,则将函数D存入堆栈中。
在函数A、函数B、函数C、函数D入栈后,分别获取到函数A的执行耗时以及执行次数、函数B的执行耗时以及执行次数、函数C的执行耗时以及执行次数、函数D的执行耗时以及执行次数;如图9所示的各个函数之间的调用关系信息,其中,函数C存在于不同的层级,则分别确定在每个层级下函数C的执行耗时以及执行次数。
如图10所示的应用程序检测的逻辑示意图。终端设备确定前台运行的应用程序发生异常卡顿事件,将导致异常卡顿事件的根因子程序的标识信息发送给服务器。服务器根据根因子程序的标识信息确定至少一个待检测函数,并向终端设备下发至少一个待检测函数的配置信息,例如待检测函数1的配置信息、待检测函数2的配置信息……待检测函数n的配置信息。终端设备对各个待检测函数进行重命名处理,并在应用程序运行过程中,通过调用并运行重命名之后的待检测函数,获取各个待检测函数的执行耗时、执行次数,以及各个待检测函数之间的调用关系信息;其中,在该逻辑示意图中,终端设备获得各个待检测函数的执行耗时、执行次数,以及各个待检测函数之间的调用关系信息的方式可以参见上文中的描述,在此不再详细赘述。终端设备进行数据存储,存储的数据包括各个待检测函数的执行耗时、执行次数,以及各个待检测函数之间的调用关系信息。终端设备将存储的数据上报给服务器进行纠错分析。
下面结合应用程序发送异常卡顿事件的应用场景,介绍下应用程序的检测流程。如图11所示的逻辑示意图;假设应用程序为即时通信应用,操作对象在通过输入法键盘输入文本时即时通信应用发生异常卡顿事件,在即时通信应用的显示界面中显示弹窗,操作对象可以在弹窗中反馈出现异常事件的相关信息,例如操作对象输入“调用输入法发生异常卡顿”。终端设备在获取到操作对象的反馈信息后,基于操作对象反馈的信息确定导致异常事件的根因子程序。终端设备将根因子程序的标识信息发送给服务器,服务器确定至少一个待检测函数,并向终端设备下发至少一个待检测函数的配置信息,例如待检测函数A的配置信息、待检测函数B的配置信息、待检测函数C的配置信息和待检测函数D的配置信息。终端设备对各个待检测函数进行重命名处理,并在应用程序运行过程中,通过调用并运行重命名之后的待检测函数,将待检测函数存入预设数据结构的堆栈中,并获取各个待检测函数的执行耗时、执行次数,以及各个待检测函数之间的调用关系信息。并将获得到的各个待检测函数的执行耗时、执行次数,以及各个待检测函数之间的调用关系信息发送给服务器。例如,待检测函数A的执行耗时xxms、执行次数xx次;待检测函数B的执行耗时xxms、执行次数xx次;待检测函数C的执行耗时xxms、执行次数xx次;待检测函数D的执行耗时xxms、执行次数xx次;以及待检测函数A、待检测函数B、待检测函数C、待检测函数D之间的调用关系信息。
如图12所示,本申请实施例提供的一种应用程序检测的整体流程图,具体实施流程如下:
步骤S1201、终端设备在确定前台运行的应用程序发生异常卡顿事件时,确定导致异常卡顿事件的根因子程序;
步骤S1202、终端设备将导致异常卡顿事件的根因子程序的标识信息发送给应用程序关联的服务器;
步骤S1203、服务器根据不同类型子程序与待检测函数之间的映射关系,以及根因子程序的标识信息,确定与根因子程序对应的至少一个待检测函数;
步骤S1204、服务器将至少一个待检测函数的配置信息发送给终端设备;
步骤S1205、终端设备分别对至少一个待检测函数进行重命名处理;
步骤S1206、终端设备在应用程序继续运行的过程中,当再次调用到根因子程序时,调用并运行每一个重命名之后的待检测函数;
下面步骤S1207和步骤S1208针对一个待检测函数进行说明:
步骤S1207、终端设备在调用并运行一个重命名之后的待检测函数时,根据待检测对象的配置信息,将待检测对象存入预设数据结构的堆栈中;
步骤S1208、终端设备根据待检测函数的运行起始时间以及运行结束时间,确定待检测函数的执行耗时;以及更新待检测函数的执行次数;
步骤S1209、终端设备在至少一个待检测函数运行结束后,根据各个待检测函数在预设数据结构的堆栈中的位置,确定至少一个待检测函数中各个待检测函数之间的调用关系信息;
步骤S1210、终端设备将各个待检测函数的执行耗时、执行次数,以及各个待检测函数之间的调用关系信息发送给服务器进行纠错分析。
基于相同的发明构思,本申请实施例还提供一种终端设备侧的应用程序检测方法,如图13所示的应用程序检测方法的实施流程图,可以包括以下步骤:
步骤S1301、在确定前台运行的应用程序发生异常事件时,将导致异常事件的根因子程序的标识信息发送给应用程序关联的服务器;其中,应用程序包括多个子程序,根因子程序为应用程序运行过程中被反复调用的基础程序;
步骤S1302、接收服务器基于标识信息发送的至少一个待检测对象的配置信息;每个待检测对象表征根因子程序的一种运行状态指标;
步骤S1303、在应用程序继续运行的过程中,当再次调用到根因子程序时,执行以下操作:分别检测至少一个待检测对象,其中,每检测一个待检测对象,获得相应的包含根因子程序的运行状态指标的检测结果,并将检测结果发送给服务器进行纠错分析。
可选的,在接收服务器基于标识信息发送的至少一个待检测对象的配置信息之后,在分别检测至少一个待检测对象之前,方法还包括:
分别对至少一个待检测对象进行重定位处理;
则每检测一个待检测对象,获得相应的包含根因子程序的运行状态指标的检测结果,具体包括:
对每个待检测对象,分别执行以下操作:对于一个待检测对象,调用并运行重定位后的一个待检测对象,获得一个待检测对象对应的包含根因子程序的运行状态指标的检测结果。
可选的,调用并运行重定位后的一个待检测对象,获得一个待检测对象对应的包含根因子程序的运行状态指标的检测结果,具体包括:
获得重定位后的一个待检测对象的运行起始时间,以及运行结束时间;
根据运行起始时间和运行结束时间,确定一个待检测对象的执行耗时;
将执行耗时作为一个待检测对象对应的包含根因子程序的运行状态指标的检测结果。
可选的,在接收服务器基于标识信息发送的至少一个待检测对象的配置信息之后,方法还包括:
在检测一个待检测对象时,根据一个待检测对象的配置信息,将一个待检测对象存入预设数据结构的堆栈中;
根据一个待检测对象在预设数据结构的堆栈中的位置,确定一个待检测对象与至少一个待检测对象中其它待检测对象之间的调用关系信息;
根据每个待检测对象与至少一个待检测对象中其它检测对象之间的调用关系信息,确定至少一个待检测对象中各个待检测对象之间的调用关系信息;
将至少一个待检测对象中各个待检测对象之间的调用关系信息发送给服务器进行纠错分析。
可选的,根据一个待检测对象的配置信息,将一个待检测对象存入预设数据结构的堆栈中,具体包括:
若根据一个待检测对象的配置信息,确定一个待检测对象为根对象,将一个待检测对象存入预设数据结构的堆栈中;
若根据一个待检测对象的配置信息,确定一个待检测对象不是根对象且当前预设数据结构的堆栈中数据不为空,则将一个待检测对象存入预设数据结构的堆栈中。
基于相同的发明构思,本申请实施例还提供一种服务器侧的应用程序检测方法,如图14所示的应用程序检测方法的实施流程图,可以包括以下步骤:
步骤S1401、接收终端发送的根因子程序的标识信息;其中,根因子程序导致在终端的前台运行的应用程序发生异常事件,应用程序包括多个子程序,根因子程序为应用程序运行过程中被反复调用的基础程序;
步骤S1402、根据不同类型子程序与待检测对象之间的映射关系,以及根因子程序的标识信息,确定与根因子程序对应的至少一个待检测对象;每个待检测对象表征根因子程序的一种运行状态指标;
步骤S1403、将至少一个待检测对象的配置信息发送给终端,以使终端在应用程序继续运行的过程中,在再次调用到根因子程序时,分别检测至少一个待检测对象,以获得每个待检测对象对应的包含根因子程序的运行状态指标的检测结果;
步骤S1404、接收终端发送的各个检测对象对应的检测结果,并基于各个检测对象对应的检测结果进行纠错分析。
基于相同的发明构思,本申请实施例还提供一种应用程序检测装置。如图15所示,其为本申请实施例中的一种应用程序检测装置1500的结构示意图,可以包括:
信息发送单元1501,用于在确定前台运行的应用程序发生异常事件时,将导致异常事件的根因子程序的标识信息发送给应用程序关联的服务器;其中,应用程序包括多个子程序,根因子程序为应用程序运行过程中被反复调用的基础程序;
信息接收单元1502,用于接收服务器基于标识信息发送的至少一个待检测对象的配置信息;每个待检测对象表征根因子程序的一种运行状态指标;
程序执行单元1503,用于在应用程序继续运行的过程中,当再次调用到根因子程序时,执行以下操作:分别检测至少一个待检测对象,其中,每检测一个待检测对象,获得相应的包含根因子程序的运行状态指标的检测结果,并将检测结果发送给服务器进行纠错分析。
可选的,在信息接收单元1502接收服务器基于标识信息发送的至少一个待检测对象的配置信息之后,在程序执行单元1503分别检测至少一个待检测对象之前,程序执行单元1503还用于:
分别对至少一个待检测对象进行重定位处理;
则程序执行单元1503具体用于:
对每个待检测对象,分别执行以下操作:对于一个待检测对象,调用并运行重定位后的一个待检测对象,获得一个待检测对象对应的包含根因子程序的运行状态指标的检测结果。
可选的,程序执行单元1503具体用于:
获得重定位后的一个待检测对象的运行起始时间,以及运行结束时间;
根据运行起始时间和运行结束时间,确定一个待检测对象的执行耗时;
将执行耗时作为一个待检测对象对应的包含根因子程序的运行状态指标的检测结果。
可选的,在信息接收单元1502接收服务器基于标识信息发送的至少一个待检测对象的配置信息之后,程序执行单元1503还用于:
在检测一个待检测对象时,根据一个待检测对象的配置信息,将一个待检测对象存入预设数据结构的堆栈中;
根据一个待检测对象在预设数据结构的堆栈中的位置,确定一个待检测对象与至少一个待检测对象中其它待检测对象之间的调用关系信息;
根据每个待检测对象与至少一个待检测对象中其它检测对象之间的调用关系信息,确定至少一个待检测对象中各个待检测对象之间的调用关系信息;
将至少一个待检测对象中各个待检测对象之间的调用关系信息发送给服务器进行纠错分析。
可选的,程序执行单元1503具体用于:
若根据一个待检测对象的配置信息,确定一个待检测对象为根对象,将一个待检测对象存入预设数据结构的堆栈中;
若根据一个待检测对象的配置信息,确定一个待检测对象不是根对象且当前预设数据结构的堆栈中数据不为空,则将一个待检测对象存入预设数据结构的堆栈中。
基于相同的发明构思,本申请实施例还提供一种应用程序检测装置。如图16所示,其为本申请实施例中的一种应用程序检测装置1600的结构示意图,可以包括:
信息接收单元1601,用于接收终端发送的根因子程序的标识信息;其中,根因子程序导致在终端的前台运行的应用程序发生异常事件,应用程序包括多个子程序,根因子程序为应用程序运行过程中被反复调用的基础程序;
确定单元1602,用于根据不同类型子程序与待检测对象之间的映射关系,以及根因子程序的标识信息,确定与根因子程序对应的至少一个待检测对象;每个待检测对象表征根因子程序的一种运行状态指标;
信息发送单元1603,用于将至少一个待检测对象的配置信息发送给终端,以使终端在应用程序继续运行的过程中,在再次调用到根因子程序时,分别检测至少一个待检测对象,以获得每个待检测对象对应的包含根因子程序的运行状态指标的检测结果;
检测结果接收单元1604,用于接收终端发送的各个检测对象对应的检测结果,并基于各个检测对象对应的检测结果进行纠错分析。
在本申请实施例中,在前台运行的应用程序发生异常事件时,将导致异常事件的根因子程序的标识信息发送给服务器;服务器下发针对该根因子程序的至少一个待检测对象的配置信息;在应用程序继续运行的过程中,当再次调用到该根因子程序,检测各个待检测对象,获取各个待检测对象对应的检测结果;将各个待检测对象的检测结果发送服务器进行纠错分析。由于本申请实施例在应用程序发生异常事件时,只需要对服务器下发的至少一个待检测对象进行检测并获取相应的检测结果,从而有针对性的对与异常事件相关的部分待检测对象进行检测,可以最大化的减少对应用程序执行正常操作的影响,并且相比线下通过对应用程序所有对象进行检测的方式,可以较大提高应用程序的检测效率。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
在介绍了本申请示例性实施方式的应用程序检测方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的用于应用程序检测的电子设备。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
图17是根据一示例性实施例示出的一种电子设备1700的框图,该电子设备1700可以指图1所示的终端设备10或服务器11,该电子设备1700包括:
处理器1710;
用于存储处理器1710可执行指令的存储器1720;
其中,处理器1710被配置为执行指令,以实现本申请实施例中的应用程序检测方法。例如如图13或如图14所示的应用程序检测方法。
在一些可能的实施方式中,根据本申请的计算装置可以至少包括至少一个处理单元、以及至少一个存储单元。其中,存储单元存储有程序代码,当程序代码被处理单元执行时,使得处理单元执行本说明书上述描述的根据本申请各种示例性实施方式的应用程序检测方法中的步骤。例如,处理单元可以执行如图13或如图14所示的应用程序检测方法。
下面参照图18来描述根据本申请的这种实施方式的计算装置1800。图18的计算装置1800仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图18所示,计算装置1800以通用计算装置的形式表现。计算装置1800的组件可以包括但不限于:上述至少一个处理单元1801、上述至少一个存储单元1802、连接不同系统组件(包括存储单元1802和处理单元1801)的总线1803。
总线1803表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元1802可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)18021和/或高速缓存存储单元18022,还可以进一步包括只读存储器(ROM)18023。
存储单元1802还可以包括具有一组(至少一个)程序模块18024的程序/实用工具18025,这样的程序模块18024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算装置1800也可以与一个或多个外部设备1804(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与计算装置1800交互的设备通信,和/或与使得该计算装置1800能与一个或多个其它计算装置进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1805进行。并且,计算装置1800还可以通过网络适配器1806与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图18所示,网络适配器1806通过总线1803与用于计算装置1800的其它模块通信。应当理解,尽管图中未示出,可以结合计算装置1800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
与上述方法实施例基于同一发明构思,本申请提供的应用程序检测方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述描述的根据本申请各种示例性实施方式的应用程序检测方法中的步骤,例如,电子设备可以执行如图13或如图14所示的应用程序检测方法。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (15)

1.一种应用程序检测方法,其特征在于,所述方法包括:
在确定前台运行的应用程序发生异常事件时,将导致所述异常事件的根因子程序的标识信息发送给所述应用程序关联的服务器;其中,所述应用程序包括多个子程序,所述根因子程序为所述应用程序运行过程中被反复调用的基础程序;
接收所述服务器基于所述标识信息发送的至少一个待检测对象的配置信息;每个待检测对象表征所述根因子程序的一种运行状态指标;
在所述应用程序继续运行的过程中,当再次调用到所述根因子程序时,执行以下操作:分别检测所述至少一个待检测对象,其中,每检测一个待检测对象,获得相应的包含所述根因子程序的运行状态指标的检测结果,并将所述检测结果发送给所述服务器进行纠错分析。
2.如权利要求1所述的方法,其特征在于,在接收所述服务器基于所述标识信息发送的至少一个待检测对象的配置信息之后,在分别检测所述至少一个待检测对象之前,所述方法还包括:
分别对所述至少一个待检测对象进行重定位处理;
则所述每检测一个待检测对象,获得相应的包含所述根因子程序的运行状态指标的检测结果,具体包括:
对每个待检测对象,分别执行以下操作:对于一个待检测对象,调用并运行重定位后的所述一个待检测对象,获得所述一个待检测对象对应的包含所述根因子程序的运行状态指标的检测结果。
3.如权利要求2所述的方法,其特征在于,所述调用并运行重定位后的所述一个待检测对象,获得所述一个待检测对象对应的包含所述根因子程序的运行状态指标的检测结果,具体包括:
获得重定位后的所述一个待检测对象的运行起始时间,以及运行结束时间;
根据所述运行起始时间和所述运行结束时间,确定所述一个待检测对象的执行耗时;
将所述执行耗时作为所述一个待检测对象对应的包含所述根因子程序的运行状态指标的检测结果。
4.如权利要求1所述的方法,其特征在于,在接收所述服务器基于所述标识信息发送的至少一个待检测对象的配置信息之后,所述方法还包括:
在检测一个待检测对象时,根据所述一个待检测对象的配置信息,将所述一个待检测对象存入预设数据结构的堆栈中;
根据所述一个待检测对象在所述预设数据结构的堆栈中的位置,确定所述一个待检测对象与所述至少一个待检测对象中其它待检测对象之间的调用关系信息;
根据每个待检测对象与所述至少一个待检测对象中其它检测对象之间的调用关系信息,确定所述至少一个待检测对象中各个待检测对象之间的调用关系信息;
将所述至少一个待检测对象中各个待检测对象之间的调用关系信息发送给所述服务器进行纠错分析。
5.如权利要求4所述的方法,其特征在于,所述根据所述一个待检测对象的配置信息,将所述一个待检测对象存入预设数据结构的堆栈中,具体包括:
若根据所述一个待检测对象的配置信息,确定所述一个待检测对象为根对象,将所述一个待检测对象存入所述预设数据结构的堆栈中;
若根据所述一个待检测对象的配置信息,确定所述一个待检测对象不是根对象且当前所述预设数据结构的堆栈中数据不为空,则将所述一个待检测对象存入所述预设数据结构的堆栈中。
6.一种应用程序检测方法,其特征在于,所述方法包括:
接收终端发送的根因子程序的标识信息;其中,所述根因子程序导致在所述终端的前台运行的应用程序发生异常事件,所述应用程序包括多个子程序,所述根因子程序为所述应用程序运行过程中被反复调用的基础程序;
根据不同类型子程序与待检测对象之间的映射关系,以及所述根因子程序的标识信息,确定与所述根因子程序对应的至少一个待检测对象;每个待检测对象表征所述根因子程序的一种运行状态指标;
将所述至少一个待检测对象的配置信息发送给所述终端,以使所述终端在所述应用程序继续运行的过程中,在再次调用到所述根因子程序时,分别检测所述至少一个待检测对象,以获得每个待检测对象对应的包含所述根因子程序的运行状态指标的检测结果;
接收所述终端发送的各个检测对象对应的检测结果,并基于各个检测对象对应的检测结果进行纠错分析。
7.一种应用程序检测装置,其特征在于,包括:
信息发送单元,用于在确定前台运行的应用程序发生异常事件时,将导致所述异常事件的根因子程序的标识信息发送给所述应用程序关联的服务器;其中,所述应用程序包括多个子程序,所述根因子程序为所述应用程序运行过程中被反复调用的基础程序;
信息接收单元,用于接收所述服务器基于所述标识信息发送的至少一个待检测对象的配置信息;每个待检测对象表征所述根因子程序的一种运行状态指标;
程序执行单元,用于在所述应用程序继续运行的过程中,当再次调用到所述根因子程序时,执行以下操作:分别检测所述至少一个待检测对象,其中,每检测一个待检测对象,获得相应的包含所述根因子程序的运行状态指标的检测结果,并将所述检测结果发送给所述服务器进行纠错分析。
8.如权利要求7所述的装置,其特征在于,在所述信息接收单元接收所述服务器基于所述标识信息发送的至少一个待检测对象的配置信息之后,在所述程序执行单元分别检测所述至少一个待检测对象之前,所述程序执行单元还用于:
分别对所述至少一个待检测对象进行重定位处理;
则所述程序执行单元具体用于:
对每个待检测对象,分别执行以下操作:对于一个待检测对象,调用并运行重定位后的所述一个待检测对象,获得所述一个待检测对象对应的包含所述根因子程序的运行状态指标的检测结果。
9.如权利要求8所述的装置,其特征在于,所述程序执行单元具体用于:
获得重定位后的所述一个待检测对象的运行起始时间,以及运行结束时间;
根据所述运行起始时间和所述运行结束时间,确定所述一个待检测对象的执行耗时;
将所述执行耗时作为所述一个待检测对象对应的包含所述根因子程序的运行状态指标的检测结果。
10.如权利要求7所述的装置,其特征在于,在所述信息接收单元接收所述服务器基于所述标识信息发送的至少一个待检测对象的配置信息之后,所述程序执行单元还用于:
在检测一个待检测对象时,根据所述一个待检测对象的配置信息,将所述一个待检测对象存入预设数据结构的堆栈中;
根据所述一个待检测对象在所述预设数据结构的堆栈中的位置,确定所述一个待检测对象与所述至少一个待检测对象中其它待检测对象之间的调用关系信息;
根据每个待检测对象与所述至少一个待检测对象中其它检测对象之间的调用关系信息,确定所述至少一个待检测对象中各个待检测对象之间的调用关系信息;
将所述至少一个待检测对象中各个待检测对象之间的调用关系信息发送给所述服务器进行纠错分析。
11.如权利要求10所述的装置,其特征在于,所述程序执行单元具体用于:
若根据所述一个待检测对象的配置信息,确定所述一个待检测对象为根对象,将所述一个待检测对象存入所述预设数据结构的堆栈中;
若根据所述一个待检测对象的配置信息,确定所述一个待检测对象不是根对象且当前所述预设数据结构的堆栈中数据不为空,则将所述一个待检测对象存入所述预设数据结构的堆栈中。
12.一种应用程序检测装置,其特征在于,包括:
信息接收单元,用于接收终端发送的根因子程序的标识信息;其中,所述根因子程序导致在所述终端的前台运行的应用程序发生异常事件,所述应用程序包括多个子程序,所述根因子程序为所述应用程序运行过程中被反复调用的基础程序;
确定单元,用于根据不同类型子程序与待检测对象之间的映射关系,以及所述根因子程序的标识信息,确定与所述根因子程序对应的至少一个待检测对象;每个待检测对象表征所述根因子程序的一种运行状态指标;
信息发送单元,用于将所述至少一个待检测对象的配置信息发送给所述终端,以使所述终端在所述应用程序继续运行的过程中,在再次调用到所述根因子程序时,分别检测所述至少一个待检测对象,以获得每个待检测对象对应的包含所述根因子程序的运行状态指标的检测结果;
检测结果接收单元,用于接收所述终端发送的各个检测对象对应的检测结果,并基于各个检测对象对应的检测结果进行纠错分析。
13.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1~6中任一所述方法的步骤。
14.一种计算机可读存储介质,其特征在于,其包括计算机程序,当所述计算机程序在电子设备上运行时,所述计算机程序用于使所述电子设备执行权利要求1~6中任一所述方法的步骤。
15.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序存储在计算机可读存储介质中;当电子设备的处理器从所述计算机可读存储介质读取所述计算机程序时,所述处理器执行所述计算机程序,使得所述电子设备执行权利要求1~6中任一所述方法的步骤。
CN202210328231.XA 2022-03-30 2022-03-30 一种应用程序检测方法、装置、电子设备和存储介质 Pending CN116932362A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210328231.XA CN116932362A (zh) 2022-03-30 2022-03-30 一种应用程序检测方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210328231.XA CN116932362A (zh) 2022-03-30 2022-03-30 一种应用程序检测方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN116932362A true CN116932362A (zh) 2023-10-24

Family

ID=88374080

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210328231.XA Pending CN116932362A (zh) 2022-03-30 2022-03-30 一种应用程序检测方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN116932362A (zh)

Similar Documents

Publication Publication Date Title
US20190370107A1 (en) Data processing platform monitoring
US10178194B2 (en) Intelligent notifications to devices with multiple applications
US10453073B1 (en) Ontology based customer support techniques
CN110135590B (zh) 信息处理方法、装置、介质及电子设备
CN107896170B (zh) 保险应用系统的监控方法及装置
US11144437B2 (en) Pre-populating continuous delivery test cases
US20220052976A1 (en) Answer text processing methods and apparatuses, and key text determination methods
CN109783345B (zh) 一种小程序性能测试方法和系统
CN111126071B (zh) 提问文本数据的确定方法、装置和客服群的数据处理方法
US8914815B2 (en) Automated framework for tracking and maintaining kernel symbol list types
CN113014608A (zh) 一种流量分发控制方法、装置、电子设备及存储介质
GB2521637A (en) Messaging digest
US20160283522A1 (en) Matching untagged data sources to untagged data analysis applications
WO2023216857A1 (en) Multi-agent chatbot with multi-intent recognition
CN116932362A (zh) 一种应用程序检测方法、装置、电子设备和存储介质
CN112948223A (zh) 一种监测运行情况的方法和装置
CN114240132A (zh) 业务流程编排执行方法、装置、计算机设备及存储介质
CN114282940A (zh) 用于意图识别的方法及装置、存储介质及电子设备
CN110874176A (zh) 交互方法、存储介质、操作系统和设备
US20220122038A1 (en) Process Version Control for Business Process Management
CN114461909A (zh) 信息处理方法、信息处理装置、电子设备和存储介质
CN111784174A (zh) 一种基于用户画像管理风险策略的方法、装置和电子设备
CN114338494B (zh) 服务依赖拓扑关系获取方法和装置、存储介质和电子设备
US11849006B2 (en) Method for reporting asynchronous data, electronic device and storage medium
US20240143925A1 (en) Method and apparatus for automatic entity recognition in customer service environments

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