CN113900910A - 应用程序监控方法、装置、存储介质和电子设备 - Google Patents
应用程序监控方法、装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN113900910A CN113900910A CN202111489942.7A CN202111489942A CN113900910A CN 113900910 A CN113900910 A CN 113900910A CN 202111489942 A CN202111489942 A CN 202111489942A CN 113900910 A CN113900910 A CN 113900910A
- Authority
- CN
- China
- Prior art keywords
- risk
- cpu
- level
- thread
- value
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开实施例提供一种应用程序监控方法、装置、存储介质和电子设备,其中方法包括:获取应用程序当前各线程的CPU使用参数;基于各线程的CPU使用参数,确定当前风险等级;在当前风险等级高于预设风险等级时,获取目标线程的堆栈信息;其中,目标线程是各线程中的一个或多个;对堆栈信息进行符号化处理,得到目标线程对应的代码信息。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用程序监控方法,应用程序监控装置,以及实现应用程序监控方法的计算机可读存储介质和电子设备。
背景技术
随着智能手机等智能终端设备的普及,智能终端设备的安装运行的应用程序的数目越多。在应用程序的运行过程中,可能会出现卡顿或者崩溃等问题,对应用程序出现这些问题的原因信息进行收集,以便于对问题进行分析,从而对应用程序的性能进行分析,进而便于对应用程序进行改进,是应用程序应用中的一项关键技术。
目前针对应用程序卡顿或者崩溃等问题的监控,通常是在应用程序已经发生卡顿或者崩溃等问题时,基于卡顿发生时的卡顿日志记录进行分析,或者基于崩溃发生时的崩溃文件进行分析。然而,目前还未出现针对应用程序即将要出现卡顿或者崩溃等问题进行预测分析的方案。
发明内容
根据本公开的一方面,提供了一种应用程序监控方法,包括:
获取应用程序当前各线程的CPU使用参数;
基于各线程的CPU使用参数,确定当前风险等级;
在所述当前风险等级高于预设风险等级时,获取目标线程的堆栈信息;其中,所述目标线程是各线程中的一个或多个;
对所述堆栈信息进行符号化处理,得到所述目标线程对应的代码信息。
根据本公开的另一方面,提供了一种应用程序监控装置,包括:
参数获取模块,用于获取应用程序当前各线程的CPU使用参数;
风险确定模块,用于基于各线程的CPU使用参数,确定当前风险等级;
信息获取模块,用于在所述当前风险等级高于预设风险等级时,获取目标线程的堆栈信息;其中,所述目标线程是各线程中的一个或多个;
信息处理模块,用于对所述堆栈信息进行符号化处理,得到所述目标线程对应的源代码信息。
根据本公开的另一方面,提供了一种电子设备,包括:
处理器;以及
存储程序的存储器;
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行上述应用程序监控方法。
根据本公开的又一方面,提供了一种存储有计算机指令的计算机可读存储介质,其中,所述计算机指令用于使计算机执行上述应用程序监控方法。
本申请实施例中提供的一个或多个技术方案,获取应用程序当前各个线程的CPU使用参数;基于各线程的CPU使用参数,确定当前风险等级;在当前风险等级高于预设风险等级时,获取目标线程的堆栈信息;其中,所述目标线程是各线程中的一个或多个;对所述堆栈信息进行符号化处理,得到所述目标线程对应的代码信息。这样,本实施例中可以在根据应用程序当前的各个线程的CPU使用参数确定风险等级超过预设风险等级时,也即应用程序大概率将要发生问题如卡顿或者崩溃时,获取目标线程的堆栈信息并符号化处理、记录,以便据此进行预测分析可能发生的问题。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
图1示出了根据本公开示例性实施例的应用程序监控方法的流程图;
图2示出了根据本公开示例性另一实施例的应用程序监控方法的流程图;
图3示出了根据本公开示例性又一实施例的应用程序监控方法的流程图;
图4示出了根据本公开示例性再一实施例的应用程序监控方法的流程图;
图5示出了根据本公开实施例的应用程序监控方法的流程图;
图6示出了根据本公开另一实施例的应用程序监控方法的流程图;
图7示出了根据本公开示例性实施例的应用程序监控装置的示意性框图;
图8示出了能够用于实现本公开的实施例的示例性电子设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
以下参照附图描述本公开的方案,图1示出本公开示例性实施例的应用程序监控方法流程图,该应用程序监控方法可以由电子设备如智能手机、平板电脑等执行,具体可以包括以下步骤:
步骤S101:获取应用程序当前各线程的CPU使用参数。
示例性的,CPU使用参数可以包括但不限于CPU占用率。在应用程序启动运行开始,即可获取应用程序当前的各线程的CPU使用参数如CPU占用率。
步骤S102:基于各线程的CPU使用参数,确定当前风险等级。
示例性的,CPU使用参数与当前风险等级可以呈正相关性,例如若各线程的CPU占用率越大,则确定的当前风险等级越高。不同的当前风险等级与不同的CPU使用参数如CPU占用率之间的映射关系可以预先根据需要自定义配置,对此不作限制。
步骤S103:在当前风险等级高于预设风险等级时,获取目标线程的堆栈信息;其中,目标线程是各线程中的一个或多个。
示例性的,预设风险等级可以预先根据需要设置,对此不作限制。在确定的当前风险等级高于预设风险等级时,即表示应用程序大概率如90%以上可能将要发生问题如卡顿或者崩溃等,此时从各线程中获取目标线程的堆栈信息。目标线程可以是各线程中CPU使用参数大于预设CPU使用参数阈值的线程,也即表示目标线程是引发应用程序大概率将要发生问题如卡顿或者崩溃等的线程。其中,预设CPU使用参数阈值可以根据具体需要设置,对此不作限制。
步骤S104:对堆栈信息进行符号化处理,得到目标线程对应的代码信息。
示例性的,对目标线程的堆栈信息符号化处理,例如基于PDB(Program DataBase)符号表进行符号化处理,是为了方便分析人员后续进行分析,符号化处理得到对应的代码信息如可识别的代码信息,方便分析人员查看。关于符号化处理具体可以参考现有技术理解,此处不再赘述。
本实施例中可以在根据应用程序当前的各个线程的CPU使用参数确定当前风险等级超过预设风险等级时,也即应用程序大概率如90%以上将要发生问题如卡顿或者崩溃时,获取目标线程的堆栈信息并符号化处理、记录,以便据此进行预测分析可能发生的问题。
为了降低应用程序发生问题如卡顿或者崩溃的概率,进而提高应用程序运行可靠性和稳定性,可选的,在本公开的一个实施例中,结合图2中所示,所述方法还可以包括以下步骤:
步骤S201:分析代码信息,得到第一分析结果。
示例性的,步骤S104之后,可以分析之前记录的代码信息如可识别代码信息,得到第一分析结果,该第一分析结果可包括但不限于可能导致出现潜在的问题如崩溃或卡顿的代码行的位置以及源代码信息等。
步骤S202:基于第一分析结果,生成应用干预信息。
示例性的,得到上述第一分析结果之后,即可基于该第一分析结果生成应用干预信息,应用干预信息例如可以包括但不限于调整目标线程的CPU使用参数的指令等,例如降低目标线程的CPU使用参数如CPU占用率的指令。
步骤S203:基于应用干预信息,对应用程序进行干预处理,以使当前风险等级不高于预设风险等级。
示例性的,得到应用干预信息如调整目标线程的CPU使用参数的指令后,可以基于该调整目标线程的CPU使用参数的指令对应用程序进行干预处理,例如降低目标线程的CPU使用参数如CPU占用率,从而控制使基于各线程的CPU使用参数确定的风险等级变化至低于或等于预设风险等级。这样可以降低应用程序发生问题如卡顿或者崩溃的概率,甚至使得该概率为零,进而提高应用程序运行可靠性和稳定性。
可选的,在本公开的一个实施例中,如图3中所示,所述方法还可以包括以下步骤:
步骤S301:在应用程序出现崩溃时,获取崩溃文件。
示例性的,在应用程序实际真的出现崩溃时,获取如下载崩溃文件。崩溃文件可以是Dump文件,Dump文件是进程的内存镜像,可以把应用程序的执行状态通过调试器保持至Dump文件中。
步骤S302:分析崩溃文件,得到第二分析结果。
示例性的,通过分析工具如WinDbg分析崩溃文件,得到第二分析结果如崩溃点位置以及崩溃点对应的源代码信息等。
步骤S303:基于第一分析结果和第二分析结果,得到总分析结果。
示例性的,本实施例中在应用程序实际真的出现崩溃时,基于崩溃发生后的第二分析结果以及崩溃发生前的第一分析结果,综合确定得到最终的总分析结果。由于增加了崩溃发生前即将发生崩溃时的第一分析结果,使得对应用程序出现崩溃原因分析的准确性提高。
可选的,在本公开的另一个实施例中,如图4中所示,所述方法还可以包括以下步骤:
步骤S401:在应用程序出现卡顿时,获取卡顿日志信息。
示例性的,在应用程序实际真的出现卡顿时,获取卡顿日志信息。
步骤S402:分析卡顿日志信息,得到第三分析结果。
步骤S403:基于第一分析结果和第三分析结果,得到总分析结果。
可以理解的是,基于卡顿日志分析的具体过程可以参考现有技术理解,此处不再赘述。本实施例中在应用程序实际真的出现卡顿时,基于卡顿发生后的第三分析结果以及卡顿发生前的第一分析结果,综合确定得到最终的总分析结果。由于增加了卡顿发生前即将发生卡顿时的第一分析结果,使得对应用程序出现卡顿原因分析的准确性提高。
可选的,在本公开的一个实施例中,CPU使用参数可以包括但不限于CPU占用率和/或CPU唤醒次数,CPU唤醒次数表示所有线程对CPU的唤醒次数,当前风险等级与CPU使用参数如CPU占用率和/或CPU唤醒次数呈正相关性。相应的,在本公开的一个实施例中,为了提高对应用程序将要发生问题如卡顿或者崩溃的预测判断的准确性,如图5中所示,步骤S102中基于各线程的CPU使用参数,确定当前风险等级,具体可以包括以下步骤:
步骤S501:基于各线程的CPU占用率,确定对应的第一风险等级。
示例性的,各各线程的CPU占用率越高,则对应的第一风险等级越高。
步骤S502:基于CPU唤醒次数,确定对应的第二风险等级。
示例性的,CPU唤醒次数越多,则对应的第二风险等级越高。
步骤S503:基于第一风险等级和第二风险等级,确定当前风险等级;其中,当前风险等级是第一风险等级和第二风险等级中的低风险等级。
本实施例中,基于CPU唤醒次数以及各线程的CPU占用率分别各自确定共两个风险等级,然后选择两个风险等级中的低风险等级作为当前风险等级,当该两个风险等级相同时,任选其中一个作为当前风险等级。
本实施例中当选择的两个风险等级中的低风险等级都高于预设风险等级时,表示应用程序非常大概率如95%以上将要发生问题如卡顿或者崩溃,此时获取目标线程的堆栈信息执行步骤S104以便于后续分析。因此本实施例的上述方案,可以提高对应用程序将要发生问题如卡顿或者崩溃的预测分析判断的准确性,减少误判。
可选的,在本公开的一个实施例中,结合图6中所示,步骤S501中基于各线程的CPU占用率,确定对应的第一风险等级,具体可以包括以下步骤:
步骤S601:在每个线程的CPU占用率均不小于第一数值,且每个线程的CPU占用率的总和不小于第二数值时,确定第一风险子等级。
示例性的,第一数值例如是10%,第二数值例如是60%,但也并不限于此。在一个示例中,每个线程的CPU占用率均不小于10%,且每个线程的CPU占用率的总和大于60%,则确定为第一风险子等级。
步骤S602:在每个线程的CPU占用率均不小于第三数值,且每个线程的CPU占用率的总和不小于第四数值时,确定第二风险子等级;其中,第三数值大于第一数值,且小于第二数值,第二数值小于第四数值。
示例性的,第三数值例如是20%,第四数值例如是80%,但也并不限于此。在一个示例中,每个线程的CPU占用率均不小于20%,且每个线程的CPU占用率的总和大于80%,则确定为第二风险子等级。
步骤S603:将第二风险子等级或者第一风险子等级作为第一风险等级。
示例性的,当确定为第二风险子等级时,说明应用程序极大概率如97%以上将要发生问题如卡顿或者崩溃,此时执行后续步骤以便后续的分析判断,可以提高对应用程序将要发生问题如卡顿或者崩溃的预测分析判断的准确性。
可以理解的是,步骤S601~S602的执行顺序不区分先后顺序,可以并行执行。第一风险子等级、第二风险子等级属于第一风险等级的细分。
可选的,在本公开的一个实施例中,该方法还可包括以下步骤:在每个线程的CPU占用率均不小于第五数值,且每个线程的CPU占用率的总和不小于第六数值时,确定第三风险子等级;其中,第五数值大于第三数值,且小于第四数值,第四数值小于第六数值,第三风险子等级高于第二风险子等级;将第三风险子等级作为第一风险等级。
示例性的,第五数值例如是30%,第六数值例如是100%,但也并不限于此。在一个示例中,每个线程的CPU占用率均不小于30%,且每个线程的CPU占用率的总和大于100%,则确定为第三风险子等级。
可以理解的是,第一风险子等级、第二风险子等级和第三风险子等级属于第一风险等级的细分,以上仅为举例说明,可以根据需要进一步划分为更多例如四个风险子等级等。
当确定为第三风险子等级时,说明应用程序极大概率如99%以上将要发生问题如卡顿或者崩溃,此时执行后续步骤以便后续的分析判断,可以提高对应用程序将要发生问题如卡顿或者崩溃的预测分析判断的准确性。
可选的,在本公开的一个实施例中,步骤S502中基于CPU唤醒次数,确定对应的第二风险等级,具体可以包括以下步骤:
步骤i):在CPU唤醒次数不大于第七数值时,确定第四风险子等级。
示例性的,第七数值例如是但不限于150次/秒,即每秒的CPU唤醒次数。在CPU唤醒次数是150以下时,确定为第四风险子等级。
步骤ii):在CPU唤醒次数大于第七数值,且不大于第八数值时,确定第五风险子等级。
示例性的,第八数值例如可以是200次/秒。在CPU唤醒次数大于150次/秒而不大于200次/秒时,确定为第五风险子等级。其中,第五风险子等级高于第四风险子等级。
步骤iii):将第四风险子等级或者第五风险子等级作为第二风险等级。
可以理解的是,第四风险子等级、第五风险子等级属于第二风险等级的细分。当确定为第五风险子等级时,说明应用程序极大概率如97%以上将要发生问题如卡顿或者崩溃,此时执行后续步骤以便后续的分析判断,可以提高对应用程序将要发生问题如卡顿或者崩溃的预测分析判断的准确性。
可选的,在本公开的一个实施例中,该方法还可包括以下步骤:
步骤iiii):在CPU唤醒次数大于第八数值,且不大于第九数值时,确定第六风险子等级;其中,第六风险子等级高于第五风险子等级。
示例性的,第九数值例如可以是300次/秒。在CPU唤醒次数大于200次/秒而不大于300次/秒时,确定为第六风险子等级。
可以理解的是,第四风险子等级、第五风险子等级和第六风险子等级属于第二风险等级的细分,以上仅为举例说明,可以根据需要进一步划分为更多例如包括四个风险子等级。
当确定为第六风险子等级时,说明应用程序极大概率如99%以上将要发生问题如卡顿或者崩溃,此时执行后续步骤以便后续的分析判断,可以提高对应用程序将要发生问题如卡顿或者崩溃的预测分析判断的准确性。
可选的,在本公开的一个实施例中,步骤S103中获取目标线程的堆栈信息之前,所述方法可以包括以下步骤:基于每个线程的CPU占用率,确定目标线程。其中,目标线程的CPU占用率大于预设阈值。
示例性的,预设阈值可以根据需要设置,例如目标线程的CPU占用率大于60%。通过此方式可以较准确地确定可能导致应用程序将要发生问题如卡顿或者崩溃的目标线程,基于目标线程的堆栈信息进行后续处理以及分析,而不是对全部所有线程都进行分析,这样可以提高分析处理的准确性和处理效率。
本公开实施例还提供一种应用程序监控装置,如图7所示应用程序监控装置可包括参数获取模块701、风险确定模块702、信息获取模块703和信息处理模块704:
其中,参数获取模块701用于获取应用程序当前各个线程的CPU使用参数。
风险确定模块702用于基于各线程的CPU使用参数,确定当前风险等级。
信息获取模块703用于在当前风险等级高于预设风险等级时,获取目标线程的堆栈信息。其中,所述目标线程是各线程中的一个或多个。
信息处理模块704用于对所述堆栈信息进行符号化处理,得到所述目标线程对应的代码信息。
本实施例中可以在根据应用程序当前的各个线程的CPU使用参数确定当前风险等级超过预设风险等级时,也即应用程序大概率将要发生问题如卡顿或者崩溃时,获取目标线程的堆栈信息并符号化处理、记录,以便据此进行预测分析可能发生的问题。
可选的,在本公开的一个实施例中,所述装置还可包括第一分析模块和应用干预模块,其中,第一分析模块用于分析所述代码信息,得到第一分析结果。应用干预模块用于基于所述第一分析结果,生成应用干预信息;基于所述应用干预信息,对所述应用程序进行干预处理,以使所述当前风险等级不高于所述预设风险等级。
可选的,在本公开的一个实施例中,所述装置还可包括第二分析模块,用于在所述应用程序出现崩溃时,获取崩溃文件;分析所述崩溃文件,得到第二分析结果;基于所述第一分析结果和所述第二分析结果,得到总分析结果。
可选的,在本公开的另一个实施例中,第二分析模块用于在所述应用程序出现卡顿时,获取卡顿日志信息;分析所述卡顿日志信息,得到第三分析结果;基于所述第一分析结果和所述第三分析结果,得到总分析结果。
可选的,在本公开的一个实施例中,所述CPU使用参数可以包括CPU占用率和/或CPU唤醒次数,所述CPU唤醒次数表示所有所述线程对CPU的唤醒次数。所述当前风险等级与所述CPU使用参数呈正相关性。
可选的,在本公开的一个实施例中,所述风险确定模块702用于基于各线程的CPU占用率,确定第一风险等级;基于所述CPU唤醒次数,确定第二风险等级;基于所述第一风险等级和所述第二风险等级,确定当前风险等级。其中,所述当前风险等级是所述第一风险等级和所述第二风险等级中的低风险等级。
可选的,在本公开的一个实施例中,风险确定模块702用于:在每个所述线程的CPU占用率均不小于第一数值,且每个所述线程的CPU占用率的总和不小于第二数值时,确定第一风险子等级;在每个所述线程的CPU占用率均不小于第三数值,且每个所述线程的CPU占用率的总和不小于时,确定第二风险子等级;其中,所述第三数值大于所述第一数值,且小于所述第二数值,所述第二数值小于所述第四数值,所述第二风险子等级高于所述第一风险子等级;将所述第二风险子等级或者所述第一风险子等级作为所述第一风险等级。
可选的,在本公开的一个实施例中,风险确定模块702用于:在每个所述线程的CPU占用率均不小于第五数值,且每个所述线程的CPU占用率的总和不小于第六数值时,确定第三风险子等级;其中,所述第五数值大于所述第三数值,且小于所述第四数值,所述第四数值小于所述第六数值,所述第三风险子等级高于所述第二风险子等级;将所述第三风险子等级作为所述第一风险等级。
可选的,在本公开的一个实施例中,风险确定模块702用于:在所述CPU唤醒次数不大于第七数值时,确定第四风险子等级;在所述CPU唤醒次数大于所述第七数值,且不大于第八数值时,确定第五风险子等级,其中,所述第五风险子等级高于所述第四风险子等级;将所述第四风险子等级或者所述第五风险子等级作为所述第二风险等级。
可选的,在本公开的一个实施例中,风险确定模块702用于:在所述CPU唤醒次数大于第八数值,且不大于第九数值时,确定第六风险子等级;其中,所述第六风险子等级高于所述第五风险子等级;将所述第六风险子等级作为所述第二风险等级。
可选的,在本公开的一个实施例中,所述装置还可包括线程确定模块,用于在信息获取模块703获取目标线程的堆栈信息之前,基于每个线程的CPU占用率,确定目标线程。其中,目标线程的CPU占用率大于预设阈值。
本公开示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本公开实施例的应用程序监控方法。
本公开示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例的应用程序监控方法。
本公开示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例的方法。
参考图8,现将描述可以作为本公开的服务器或客户端的电子设备800的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
电子设备800中的多个部件连接至I/O接口805,包括:输入单元806、输出单元807、存储单元808以及通信单元809。输入单元806可以是能向电子设备800输入信息的任何类型的设备,输入单元806可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元807可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元804可以包括但不限于磁盘、光盘。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理。例如,在一些实施例中,上述各实施例的应用程序监控方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到电子设备800上。在一些实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行应用程序监控方法。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
如本公开使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
Claims (13)
1.一种应用程序监控方法,包括:
获取应用程序当前各线程的CPU使用参数;
基于所述各线程的CPU使用参数,确定当前风险等级;
在所述当前风险等级高于预设风险等级时,获取目标线程的堆栈信息,其中,所述目标线程是各线程中的一个或多个;
对所述堆栈信息进行符号化处理,得到所述目标线程对应的代码信息。
2.如权利要求1所述的方法,其中,所述方法还包括:
分析所述代码信息,得到第一分析结果;
基于所述第一分析结果,生成应用干预信息;
基于所述应用干预信息,对所述应用程序进行干预处理,以使所述当前风险等级不高于所述预设风险等级。
3.如权利要求2所述的方法,其中,所述方法还包括:
在所述应用程序出现崩溃时,获取崩溃文件;
分析所述崩溃文件,得到第二分析结果;
基于所述第一分析结果和所述第二分析结果,得到总分析结果;
或者,
在所述应用程序出现卡顿时,获取卡顿日志信息;
分析所述卡顿日志信息,得到第三分析结果;
基于所述第一分析结果和所述第三分析结果,得到总分析结果。
4.如权利要求1~3任一项所述的方法,其中,所述CPU使用参数包括CPU占用率和/或CPU唤醒次数,所述CPU唤醒次数表示所有线程对CPU的唤醒次数,所述当前风险等级与所述CPU使用参数呈正相关性。
5.如权利要求4所述的方法,其中,所述基于各线程的CPU使用参数,确定当前风险等级,包括:
基于所述各线程的CPU占用率,确定第一风险等级;
基于所述CPU唤醒次数,确定第二风险等级;
基于所述第一风险等级和所述第二风险等级,确定所述当前风险等级,其中,所述当前风险等级是所述第一风险等级和所述第二风险等级中的低风险等级。
6.如权利要求5所述的方法,其中,所述基于各所述线程的CPU占用率,确定第一风险等级,包括:
在每个线程的CPU占用率均不小于第一数值,且每个线程的CPU占用率的总和不小于第二数值时,确定第一风险子等级;
在每个线程的CPU占用率均不小于第三数值,且每个线程的CPU占用率的总和不小于第四数值时,确定第二风险子等级,其中,所述第三数值大于所述第一数值且小于所述第二数值,所述第二数值小于所述第四数值,所述第二风险子等级高于所述第一风险子等级;
将所述第二风险子等级或者所述第一风险子等级作为所述第一风险等级。
7.如权利要求6所述的方法,其中,所述方法还包括:
在每个线程的CPU占用率均不小于第五数值,且每个线程的CPU占用率的总和不小于第六数值时,确定第三风险子等级,其中,所述第五数值大于所述第三数值且小于所述第四数值,所述第四数值小于所述第六数值,所述第三风险子等级高于所述第二风险子等级;
将所述第三风险子等级作为所述第一风险等级。
8.如权利要求5所述的方法,其中,所述基于所述CPU唤醒次数,确定第二风险等级,包括:
在所述CPU唤醒次数不大于第七数值时,确定第四风险子等级;
在所述CPU唤醒次数大于所述第七数值且不大于第八数值时,确定第五风险子等级,其中,所述第五风险子等级高于所述第四风险子等级;
将所述第四风险子等级或者所述第五风险子等级作为所述第二风险等级。
9.如权利要求8所述的方法,其中,所述方法还包括:
在所述CPU唤醒次数大于所述第八数值且不大于第九数值时,确定第六风险子等级,其中,所述第六风险子等级高于所述第五风险子等级;
将所述第六风险子等级作为所述第二风险等级。
10.如权利要求4所述的方法,其中,所述获取目标线程的堆栈信息之前,所述方法包括:
基于每个线程的CPU占用率,确定所述目标线程,其中,所述目标线程的CPU占用率大于预设阈值。
11.一种应用程序监控装置,包括:
参数获取模块,用于获取应用程序当前各线程的CPU使用参数;
风险确定模块,用于基于所述各线程的CPU使用参数,确定当前风险等级;
信息获取模块,用于在所述当前风险等级高于预设风险等级时,获取目标线程的堆栈信息;其中,所述目标线程是各线程中的一个或多个;
信息处理模块,用于对所述堆栈信息进行符号化处理,得到所述目标线程对应的代码信息。
12.一种电子设备,包括:
处理器;以及
存储程序的存储器;
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-10中任一项所述的应用程序监控方法。
13.一种存储有计算机指令的计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据权利要求1-10中任一项所述的应用程序监控方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111489942.7A CN113900910A (zh) | 2021-12-08 | 2021-12-08 | 应用程序监控方法、装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111489942.7A CN113900910A (zh) | 2021-12-08 | 2021-12-08 | 应用程序监控方法、装置、存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113900910A true CN113900910A (zh) | 2022-01-07 |
Family
ID=79025682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111489942.7A Pending CN113900910A (zh) | 2021-12-08 | 2021-12-08 | 应用程序监控方法、装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113900910A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116089930A (zh) * | 2022-08-19 | 2023-05-09 | 荣耀终端有限公司 | 应用管控方法、装置及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108345524A (zh) * | 2017-01-22 | 2018-07-31 | 腾讯科技(深圳)有限公司 | 应用程序监控方法及应用程序监控装置 |
CN109542719A (zh) * | 2018-10-26 | 2019-03-29 | 金蝶软件(中国)有限公司 | 线程状态监控方法、装置、计算机设备和存储介质 |
CN109684848A (zh) * | 2018-09-07 | 2019-04-26 | 平安科技(深圳)有限公司 | 风险评估方法、装置、设备及可读存储介质 |
US20190138081A1 (en) * | 2016-05-31 | 2019-05-09 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for Managing Central Processing Unit and Related Products |
CN110659130A (zh) * | 2019-07-25 | 2020-01-07 | 平安科技(深圳)有限公司 | Cpu使用率自适应调整方法、装置、终端及存储介质 |
US20210042122A1 (en) * | 2018-08-14 | 2021-02-11 | Advanced New Technologies Co., Ltd. | Method for executing instructions in cpu |
CN112965844A (zh) * | 2019-12-12 | 2021-06-15 | 北京沃东天骏信息技术有限公司 | 一种cpu飙升事故处理方法和装置 |
CN113032215A (zh) * | 2021-03-24 | 2021-06-25 | 北京字节跳动网络技术有限公司 | 线程快照解析方法、装置、设备和存储介质 |
CN113535143A (zh) * | 2020-04-21 | 2021-10-22 | 腾讯科技(深圳)有限公司 | 堆栈信息处理方法、装置、电子设备和存储介质 |
CN113553267A (zh) * | 2021-07-22 | 2021-10-26 | 招商银行股份有限公司 | 应用性能测试方法、设备、介质及计算机程序产品 |
-
2021
- 2021-12-08 CN CN202111489942.7A patent/CN113900910A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190138081A1 (en) * | 2016-05-31 | 2019-05-09 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for Managing Central Processing Unit and Related Products |
CN108345524A (zh) * | 2017-01-22 | 2018-07-31 | 腾讯科技(深圳)有限公司 | 应用程序监控方法及应用程序监控装置 |
US20210042122A1 (en) * | 2018-08-14 | 2021-02-11 | Advanced New Technologies Co., Ltd. | Method for executing instructions in cpu |
CN109684848A (zh) * | 2018-09-07 | 2019-04-26 | 平安科技(深圳)有限公司 | 风险评估方法、装置、设备及可读存储介质 |
CN109542719A (zh) * | 2018-10-26 | 2019-03-29 | 金蝶软件(中国)有限公司 | 线程状态监控方法、装置、计算机设备和存储介质 |
CN110659130A (zh) * | 2019-07-25 | 2020-01-07 | 平安科技(深圳)有限公司 | Cpu使用率自适应调整方法、装置、终端及存储介质 |
CN112965844A (zh) * | 2019-12-12 | 2021-06-15 | 北京沃东天骏信息技术有限公司 | 一种cpu飙升事故处理方法和装置 |
CN113535143A (zh) * | 2020-04-21 | 2021-10-22 | 腾讯科技(深圳)有限公司 | 堆栈信息处理方法、装置、电子设备和存储介质 |
CN113032215A (zh) * | 2021-03-24 | 2021-06-25 | 北京字节跳动网络技术有限公司 | 线程快照解析方法、装置、设备和存储介质 |
CN113553267A (zh) * | 2021-07-22 | 2021-10-26 | 招商银行股份有限公司 | 应用性能测试方法、设备、介质及计算机程序产品 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116089930A (zh) * | 2022-08-19 | 2023-05-09 | 荣耀终端有限公司 | 应用管控方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9489138B1 (en) | Method and apparatus for reliable I/O performance anomaly detection in datacenter | |
CN113704063B (zh) | 一种云手机的性能监控方法、装置、设备及存储介质 | |
CN114996173B (zh) | 一种管理存储设备写操作的方法和装置 | |
CN112911013A (zh) | 云应用的处理方法、装置、计算机设备和存储介质 | |
US9697184B2 (en) | Adjusting layout size of hyperlink | |
CN115880110A (zh) | 作业任务监控方法、装置、电子设备及存储介质 | |
CN113033346A (zh) | 文本检测方法、装置和电子设备 | |
CN113900910A (zh) | 应用程序监控方法、装置、存储介质和电子设备 | |
CN110995687A (zh) | 一种猫池设备识别方法、装置、设备及存储介质 | |
WO2018097877A1 (en) | Window deviation analyzer | |
CN113672449A (zh) | 智能运维异常监测方法、装置、计算机设备和存储介质 | |
CN113590447A (zh) | 埋点处理方法和装置 | |
CN114363704A (zh) | 视频播放方法、装置、设备以及存储介质 | |
CN114138358A (zh) | 应用程序的启动优化方法、装置、设备和存储介质 | |
CN113535020A (zh) | 用于生成应用图标的方法、装置、设备、介质和产品 | |
CN112988105A (zh) | 播放状态控制方法、装置、电子设备和存储介质 | |
CN114880164B (zh) | 一种管理存储页的方法和装置 | |
CN114879916B (zh) | 一种管理存储单元的方法和装置 | |
CN115378746B (zh) | 网络入侵检测规则生成方法、装置、设备以及存储介质 | |
CN115292339B (zh) | 数据库更新方法、装置、电子设备和存储介质 | |
CN109240827B (zh) | 应用的资源占用情况的确定方法、装置、存储介质和设备 | |
CN111078718B (zh) | 频率控制方法、装置、设备以及计算机存储介质 | |
CN115604091A (zh) | 数据处理方法、装置、基板控制管理***及电子设备 | |
CN113961834A (zh) | 数据处理方法、装置、设备以及存储介质 | |
CN114791996A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220107 |