CN112860469A - 一种卡顿日志信息收集方法、装置、设备及存储介质 - Google Patents

一种卡顿日志信息收集方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112860469A
CN112860469A CN202110156794.0A CN202110156794A CN112860469A CN 112860469 A CN112860469 A CN 112860469A CN 202110156794 A CN202110156794 A CN 202110156794A CN 112860469 A CN112860469 A CN 112860469A
Authority
CN
China
Prior art keywords
stack
log
codes
clustering
call stack
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
CN202110156794.0A
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.)
Bigo Technology Pte Ltd
Original Assignee
Bigo Technology Pte 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 Bigo Technology Pte Ltd filed Critical Bigo Technology Pte Ltd
Priority to CN202110156794.0A priority Critical patent/CN112860469A/zh
Publication of CN112860469A publication Critical patent/CN112860469A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0766Error or fault reporting or storing
    • G06F11/0781Error filtering or prioritizing based on a policy defined by the user or on a policy defined by a hardware/software module, e.g. according to a severity level
    • 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/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Landscapes

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

Abstract

本申请实施例公开了一种卡顿日志信息收集方法、装置、设备及存储介质。本申请实施例提供的技术方案通过在移动端按照采集时间间隔获取主线程的聚合调用堆栈,并对聚合调用堆栈进行聚合处理,同时,按照检测时间间隔检测主线程是否发生卡顿事件,并在发生卡顿事件时将这段时间采集的聚合调用堆栈保存为卡顿日志文件,并向服务器上传,并由服务器对接收到的卡顿日志文件进行符号化和聚类处理,减少最终生成的卡顿日志过于冗长的情况,使得卡顿日志文件的阅读更简单,方便对卡顿原因进行定位,并且通过对各个卡顿日志文件进行符号化和聚类处理,减少卡顿日志文件重复阅读的情况,减少卡顿分析的时间成本,有效提高卡顿原因分析的效率。

Description

一种卡顿日志信息收集方法、装置、设备及存储介质
技术领域
本申请实施例涉及数据处理技术领域,尤其涉及一种卡顿日志信息收集方法、装置、设备及存储介质。
背景技术
移动应用程序的卡顿是影响应用程序使用体验的一个重要因素,在卡顿发生期间,应用程序无法响应用户对它的操作,导致用户的点击操作一直处于等待中,影响用户体验。
为了方便定位卡顿发生的原因,需要在卡顿发生时记录并上传卡顿日志信息。卡顿日志信息中最主要的是主线程的堆栈信息,开发人员根据堆栈信息就可以判断出卡顿发生的原因。但是随着应用程序用户的上涨,卡顿日志信息越来越多,若让开发人员逐个去查看卡顿日志信息,将会导致卡顿原因分析的效率下降。
发明内容
本申请实施例提供一种卡顿日志信息收集方法、装置、设备及存储介质,以提高卡顿原因分析的效率。
在第一方面,本申请实施例提供了一种卡顿日志信息收集方法,应用于移动端,包括:
按照设定的采集时间间隔,获取主线程的调用堆栈,并对所述主线程的调用堆栈进行聚合处理得到聚合调用堆栈;
按照设定的检测时间间隔,检测所述主线程是否发生卡顿事件,并响应于所述主线程发生卡顿事件,将所述聚合调用堆栈保存为卡顿日志文件,所述检测时间间隔大于所述采集时间间隔;
向服务器上传所述卡顿日志文件,由所述服务器对所述卡顿日志文件进行符号化处理和聚类处理。
在第二方面,本申请实施例提供了一种卡顿日志信息收集方法,应用于服务器,包括:
确定移动端上传的多个卡顿日志文件中的聚合调用堆栈,并对所述聚合调用堆栈进行符号化,所述聚合调用堆栈由所述移动端对主线程的调用堆栈进行收集并进行聚合处理得到,并由所述移动端在所述主线程发生卡顿事件时保存为所述卡顿日志文件,所述聚合调用堆栈记录的堆栈代码包括系统库堆栈代码和软件堆栈代码;
确定所述聚合调用堆栈中的系统库堆栈代码,并在所述系统库堆栈代码中筛选出卡顿相关的系统库堆栈代码;
基于筛选出的所述系统库堆栈代码和所述软件堆栈代码,对多个所述卡顿日志文件进行聚类处理。
在第三方面,本申请实施例提供了一种卡顿日志信息收集装置,应用于移动端,包括堆栈采集模块、卡顿检测模块和日志上传模块,其中:
所述堆栈采集模块,用于按照设定的采集时间间隔,获取主线程的调用堆栈,并对所述主线程的调用堆栈进行聚合处理得到聚合调用堆栈;
所述卡顿检测模块,用于按照设定的检测时间间隔,检测所述主线程是否发生卡顿事件,并响应于所述主线程发生卡顿事件,将所述聚合调用堆栈保存为卡顿日志文件,所述检测时间间隔大于所述采集时间间隔;
所述日志上传模块,用于向服务器上传所述卡顿日志文件,由所述服务器对所述卡顿日志文件进行符号化处理和聚类处理。
在第四方面,本申请实施例提供了一种卡顿日志信息收集装置,应用于服务器,包括符号化处理模块、堆栈筛选模块和日志聚类模块,其中:
所述符号化处理模块,用于确定移动端上传的多个卡顿日志文件中的聚合调用堆栈,并对所述聚合调用堆栈进行符号化,所述聚合调用堆栈由所述移动端对主线程的调用堆栈进行收集并进行聚合处理得到,并由所述移动端在所述主线程发生卡顿事件时保存为所述卡顿日志文件,所述聚合调用堆栈记录的堆栈代码包括系统库堆栈代码和软件堆栈代码;
所述堆栈筛选模块,用于确定所述聚合调用堆栈中的系统库堆栈代码,并在所述系统库堆栈代码中筛选出卡顿相关的系统库堆栈代码;
所述日志聚类模块,用于基于筛选出的所述系统库堆栈代码和所述软件堆栈代码,对多个所述卡顿日志文件进行聚类处理。
在第五方面,本申请实施例提供了一种卡顿日志信息收集设备,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的卡顿日志信息收集方法。
在第六方面,本申请实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的卡顿日志信息收集方法。
本申请实施例通过在移动端按照采集时间间隔获取主线程的聚合调用堆栈,并对聚合调用堆栈进行聚合处理,同时,按照检测时间间隔检测主线程是否发生卡顿事件,并在发生卡顿事件时将这段时间采集的聚合调用堆栈保存为卡顿日志文件,并向服务器上传,并由服务器对接收到的卡顿日志文件进行符号化和聚类处理,在卡顿日志文件采集阶段通过聚合处理,将相同的聚合调用堆栈聚合在一起,减少最终生成的卡顿日志过于冗长的情况,使得卡顿日志文件的阅读更简单,方便对卡顿原因进行定位,并且通过对各个卡顿日志文件进行符号化和聚类处理,减少卡顿日志文件重复阅读的情况,减少卡顿分析的时间成本,有效提高卡顿原因分析的效率。
附图说明
图1是本申请实施例提供的一种应用于移动端的卡顿日志信息收集方法的流程图;
图2是本申请实施例提供的一种应用于服务器的卡顿日志信息收集方法的流程图;
图3是本申请实施例提供的另一种应用于服务器的卡顿日志信息收集方法的流程图;
图4是本申请实施例提供的一种应用于移动端的卡顿日志信息收集装置的结构示意图;
图5是本申请实施例提供的一种应用于服务器的卡顿日志信息收集装置的结构示意图;
图6是本申请实施例提供的一种卡顿日志信息收集设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
图1给出了本申请实施例提供的一种应用于移动端的卡顿日志信息收集方法的流程图,本申请实施例提供的卡顿日志信息收集方法可以由应用于移动端的卡顿日志信息收集装置来执行,该卡顿日志信息收集装置可以通过硬件和软件的方式实现,并集成在卡顿日志信息收集设备中。
下述以卡顿日志信息收集装置执行卡顿日志信息收集方法为例进行描述。参考图1,该卡顿日志信息收集方法包括:
S101:按照设定的采集时间间隔,获取主线程的调用堆栈,并对所述主线程的调用堆栈进行聚合处理得到聚合调用堆栈。
示例性的,每隔设定的采集时间间隔(例如0.3s),获取软件程序的主线程的调用堆栈,其中主线程的调用堆栈以内存地址的形式进行记录,该内存地址即为主线程所调用的函数对应的地址。
进一步的,在一个检测时间间隔内,对获取到的主线程的各个调用堆栈进行聚合处理,以将主线程的内存地址相同的调用堆栈聚合到一起,得到聚合调用堆栈,减少后续生成的卡顿日志过于冗长的情况,并提高卡顿日志文件的可阅读性。
具体的,本实施例提供的按照设定的采集时间间隔,获取主线程的调用堆栈,并对所述主线程的调用堆栈进行聚合处理得到聚合调用堆栈,包括步骤S1011-S1012:
S1011:按照设定的采集时间间隔,通过检测子线程从寄存器获取主线程的调用堆栈。
具体的,在开启应用程序的主线程后,同时开启一个常驻后台的检测子线程,该检测子线程用于按照设定的采集时间间隔从寄存器获取主线程的调用堆栈,以及用于在步骤S102中按照设定的检测时间间隔检测所述主线程是否发生卡顿事件。
进一步的,检测子线程按照设定的采集时间间隔,从寄存器获取主线程的调用堆栈。更具体的,从fp寄存器递归地获取主线程的调用堆栈,即在fp寄存器中找到主线程的调用堆栈中的内存地址,根据该内存地址确定调用者地址,确定与主线程对应的调用者地址,再根据该调用者地址逐个往前找到其余的内存地址,这些内存地址即为主线程的调用堆栈对应的内存地址,从而得到主线程在当前采集时间周期对应的调用堆栈。
S1012:基于所述主线程的调用堆栈对应的内存地址,对所述主线程的调用堆栈进行聚合处理,并记录所述内存地址的出现次数,以得到聚合调用堆栈。
具体的,在每次得到主线程的调用堆栈后,对当前收集到的主线程的调用堆栈进行聚合处理,即将这些主线程的调用堆栈中相同的内存地址进行整合,并记录这些内存地址在这些主线程的调用堆栈中的出现次数,得到记录有在当前检测时间间隔对应的检测周期内,所出现的内存地址和各内存地址的出现次数的聚合调用堆栈。
S102:按照设定的检测时间间隔,检测所述主线程是否发生卡顿事件,并响应于所述主线程发生卡顿事件,将所述聚合调用堆栈保存为卡顿日志文件,所述检测时间间隔大于所述采集时间间隔。
本实施例提供的检测时间间隔大于采集时间间隔,例如将检测时间间隔设置为3s,将采集时间间隔设置为0.3s,则在一个检测时间间隔对应的检测周期内,共采集了10次主线程的调用堆栈,对应得到10个聚合调用堆栈。
示例性的,按照设定的检测时间间隔,检测主线程是否发生卡顿事件。若未发生卡顿事件,则删除当前采集到的聚合调用堆栈,并返回至步骤S101继续采集主线程的调用堆栈。
进一步的,若检测到主线程发生卡顿事件,则响应于卡顿事件将当前采集到的聚合调用堆栈保存为卡顿日志文件,并对卡顿日志文件进行保存,等待向服务器上传,并继续下一次的对主线程的调用堆栈的采集以及卡顿事件的检测。
可以理解的是,在每次生成的卡顿日志文件中记录的内存地址只会出现一次,并且记录有各个内存地址对应的出现次数。根据出现次数即可确定在对应检测周期内各个内存地址的出现次数,有效减少卡顿日志文件数据冗余的情况,同时有利于对卡顿日志文件的阅读。
具体的,本实施例提供的按照设定的检测时间间隔,检测所述主线程是否发生卡顿事件,包括步骤S1021-S1022:
S1021:按照设定的检测时间间隔,通过检测子线程向所述主线程发送测试数据包。
S1022:根据所述主线程是否基于所述测试数据包进行答复,确定所述主线程是否发生卡顿事件。
具体的,检测主线程按照设定的检测时间间隔向主线程发送测试数据包,并等待主线程的答复,若主线程未发生卡顿事件,主线程在接收到测试数据包后会向检测子线程进行答复。
进一步的,若在设定等待时间内接收到主线程的答复,则确定主线程未发生卡顿事件;若在设定等待时间内未接收到主线程的答复,则确定主线程发生卡顿事件。
本申请实施例通过检测子线程ping主线程的方式向主线程发送测试数据包,若主线程在一个检测时间间隔内无法回应ping的消息,则认为主线程发生卡顿事件。
在一个可能的实施例中,对主线程是否发生卡顿事件的检测还可以是基于监测移动端屏幕的刷新率进行,即在刷新率低于设定的刷新率阈值时,认为主线程发生卡顿事件;还可以是线程管理工具runloop进行,即在runloop无法响应外部操作持续设定检测时长阈值时,认为主线程发生卡顿事件。
S103:向服务器上传所述卡顿日志文件,由所述服务器对所述卡顿日志文件进行符号化处理和聚类处理。
示例性的,按照设定的上传时间或响应于服务器的日志获取通知,向服务器上传上述保存的卡顿日志文件,由服务器对这些卡顿日志文件进行符号化处理和聚类处理,提高卡顿日志文件的可阅读性,并将对应同一类卡顿的卡顿日志文件归类到一起,有利于快速发现卡顿原因,并标记卡顿处理状态,减少重复检查卡顿的情况,减少了查卡顿的时间成本。
可选的,在向服务器上传卡顿日志文件之前,先对需要上传的卡顿日志文件进行打包压缩,减少流量数据的消耗。
上述,通过在移动端按照采集时间间隔获取主线程的聚合调用堆栈,并对聚合调用堆栈进行聚合处理,同时,按照检测时间间隔检测主线程是否发生卡顿事件,并在发生卡顿事件时将这段时间采集的聚合调用堆栈保存为卡顿日志文件,并向服务器上传,并由服务器对接收到的卡顿日志文件进行符号化和聚类处理,在卡顿日志文件采集阶段通过聚合处理,将相同的聚合调用堆栈聚合在一起,减少最终生成的卡顿日志过于冗长的情况,使得卡顿日志文件的阅读更简单,方便对卡顿原因进行定位,并且通过对各个卡顿日志文件进行符号化和聚类处理,减少卡顿日志文件重复阅读的情况,减少卡顿分析的时间成本,有效提高卡顿原因分析的效率。
图2给出了本申请实施例提供的一种应用于服务器的卡顿日志信息收集方法的流程图,本申请实施例提供的卡顿日志信息收集方法可以由应用于服务器的卡顿日志信息收集装置来执行,该卡顿日志信息收集装置可以通过硬件和软件的方式实现,并集成在卡顿日志信息收集设备中。
下述以卡顿日志信息收集装置执行卡顿日志信息收集方法为例进行描述。参考图2,该卡顿日志信息收集方法包括:
S201:确定移动端上传的多个卡顿日志文件中的聚合调用堆栈,并对所述聚合调用堆栈进行符号化。
其中,所述聚合调用堆栈由所述移动端对主线程的调用堆栈进行收集并进行聚合处理得到,并由所述移动端在所述主线程发生卡顿事件时保存为所述卡顿日志文件,所述聚合调用堆栈记录的堆栈代码包括系统库堆栈代码和软件堆栈代码。
本实施例提供的卡顿日志文件由各个移动端进行上传得到,移动端通过对主线程的调用堆栈进行收集并进行聚合处理得到聚合调用堆栈,并在主线程发生卡顿事件时保存为卡顿日志文件。其中移动端对调用堆栈的收集、卡顿事件的检测以及卡顿日志文件的上传可参考上述实施例,本实施例不再赘述。
本实施例提供的聚合调用堆栈记录的堆栈代码包括系统库堆栈代码和软件堆栈代码。其中,系统库堆栈代码对应于移动端自身系统在调用函数时,该函数所对应的内存地址,软件堆栈代码对应于软件程序主线程在调用函数时,该函数所对应的内存地址。
示例性的,确定各个移动端上传的多个卡顿日志文件记录的聚合调用堆栈,确定每个聚合调用堆栈中记录的各个堆栈代码,并对这些堆栈代码进行符号化,从而利用函数表示符号代替聚合调用堆栈中记录的内存地址,以实现对聚合调用堆栈的符号化。可以理解的是,通过对聚合调用堆栈进行符号化,可有效提高卡顿日志文件的可阅读性,方便开发人员快速定位卡顿原因,提高卡顿分析效率。
S202:确定所述聚合调用堆栈中的系统库堆栈代码,并在所述系统库堆栈代码中筛选出卡顿相关的系统库堆栈代码。
示例性的,在对聚合调用堆栈进行符号化后,针对每一个卡顿日志文件,确定聚合调用堆栈中记录的系统库堆栈代码和软件堆栈代码,并在系统库堆栈代码中筛选出卡顿相关的系统库堆栈代码,这些筛选出的系统库堆栈代码将用于后续对卡顿日志文件的聚类处理。
S203:基于筛选出的所述系统库堆栈代码和所述软件堆栈代码,对多个所述卡顿日志文件进行聚类处理。
示例性的,在确定每个卡顿日志文件筛选出的系统库堆栈代码后,基于这些系统库堆栈代码和软件堆栈代码对这些卡顿日志文件进行聚类处理,从而将对应于同一类卡顿原因的卡顿日志文件归到同一聚类类别中。
在完成对卡顿日志文件的聚类处理后,得到不同的聚类类别,一个聚类类别对应一个或多个卡顿日志文件,并且一个聚类类别下的多个卡顿日志文件对应的卡顿原因相同或相近。
进一步的,可按照聚类处理的不同聚类类别对卡顿日志文件进行分类保存或展示,可响应于对聚类类别的选择,展示对应聚类类别下的全部卡顿日志文件,开发人员可基于卡顿日志进行卡顿原因分析。
可以理解的是,本实施例在对卡顿日志文件进行聚类处理时,由于非卡顿相关的系统库堆栈代码并非造成卡顿事件的原因,将这些系统库堆栈代码排除后,有效提高对卡顿日志文件进行聚类处理的准确性。
需要进行解释的是,在对系统库堆栈代码进行筛选时,并未将筛除的非卡顿相关的系统库堆栈代码删除,只是不将筛除的系统库堆栈代码作为聚类处理的考量,在查看卡顿日志文件时,可查看到完整的聚合调用堆栈。
在一个可能的实施例中,在开发人员完成对一类卡顿日志文件的分析后,可对该类型的卡顿日志文件进行标记,减少对同一类型的卡顿日志文件重复分析的情况。
上述,通过在移动端按照采集时间间隔获取主线程的聚合调用堆栈,并对聚合调用堆栈进行聚合处理,同时,按照检测时间间隔检测主线程是否发生卡顿事件,并在发生卡顿事件时将这段时间采集的聚合调用堆栈保存为卡顿日志文件,并向服务器上传,并由服务器对接收到的卡顿日志文件进行符号化和聚类处理,在卡顿日志文件采集阶段通过聚合处理,将相同的聚合调用堆栈聚合在一起,减少最终生成的卡顿日志过于冗长的情况,使得卡顿日志文件的阅读更简单,方便对卡顿原因进行定位,并且通过对各个卡顿日志文件进行符号化和聚类处理,减少卡顿日志文件重复阅读的情况,减少卡顿分析的时间成本,有效提高卡顿原因分析的效率。
在上述实施例的基础上,图3给出了本申请实施例提供的另一种应用于服务器的卡顿日志信息收集方法的流程图,该卡顿日志信息收集方法是对上述应用于服务器的卡顿日志信息收集方法的具体化。参考图3,该卡顿日志信息收集方法包括:
S301:确定移动端上传的卡顿日志文件中的聚合调用堆栈,所述聚合调用堆栈以内存地址的形式进行表示,并且所述聚合调用堆栈记录有各个内存地址的出现次数。
其中,所述聚合调用堆栈由所述移动端对主线程的调用堆栈进行收集并进行聚合处理得到,并由所述移动端在所述主线程发生卡顿事件时保存为所述卡顿日志文件,所述聚合调用堆栈记录的堆栈代码包括系统库堆栈代码和软件堆栈代码。
具体的,确定各移动端上传的卡顿日志文件中的聚合调用堆栈,其中未进行符号化的聚合调用堆栈以内存地址的形式进行表示,并且聚合调用堆栈记录有各个内存地址的出现次数。
S302:依据设定的符号表记录的内存地址与函数表示符号之间的对应关系,对所述聚合调用堆栈进行符号化,从而以函数表示符号的形式表示所述聚合调用堆栈。
其中,符号表记录有内存地址与函数表示符号之间的对应关系,例如iOS平台提供的dSYM文件(一般称为符号表或符号文件),根据dSYM文件可将调用堆栈中的内存地址转换为函数表示符号,例如将内存地址转换成应用程序里的函数、变量和所属文件名对应的符号。
具体的,依据设定的符号表记录的内存地址与函数表示符号之间的对应关系,将各个聚合调用堆栈中记录的内存地址替换为对应的函数表示符号,从而对各个聚合调用堆栈进行符号化,以函数表示符号的形式表示聚合调用堆栈,提高卡顿日志文件的可读性,并且在符号化后的聚合调用堆栈中记录有各个函数表示符号对应的出现次数。
S303:根据所述聚合调用堆栈对应的函数表示符号,确定所述聚合调用堆栈中的系统库堆栈代码,所述系统库堆栈代码包括用户界面系统库堆栈代码和非用户界面系统库堆栈代码。
需要进行解释的是,在完成符号化的聚合调用堆栈中,一个函数表示符号及其对应的出现次数对应一行堆栈代码。其中堆栈代码包括系统库堆栈代码以及软件堆栈代码,并且本实施例提供的系统库堆栈代码包括用户界面系统库堆栈代码和非用户界面系统库堆栈代码。
在一个可能的实施例中,在服务器中预先记录有软件堆栈代码、用户界面系统库堆栈代码和非用户界面系统库堆栈代码与函数表示符号之间的对应关系。例如,dispatch字段对应的系统库堆栈代码可确定为用户界面系统库堆栈代码,libsystem_、libobjc.A.dylib、libsystem_malloc.dylib等字段对应的系统库堆栈代码可确定为非用户界面系统库堆栈代码。
具体的,在对聚合调用堆栈进行符号化后,根据聚合调用堆栈每一行堆栈代码对应的函数表示符号,确定每个聚合调用堆栈中的系统库堆栈代码以及软件堆栈代码。
S304:筛除所述系统库堆栈代码中的非用户界面系统库堆栈代码。
在一般情况下,出现在聚合调用堆栈中的非用户界面系统库堆栈代码与卡顿原因并不相关,例如dispatch对应的非用户界面系统库堆栈代码只是做任务派发的相关操作,如果把非用户界面系统库堆栈代码作为聚类条件,不会对于卡顿原因的定位产生积极作用。
具体的,在确定系统库堆栈代码中的用户界面系统库堆栈代码和非用户界面系统库堆栈代码后,将非用户界面系统库堆栈代码筛除,不将非用户界面系统库堆栈代码加入聚类处理的考量中。
S305:筛选出所述系统库堆栈代码中,出现次数达到设定的次数阈值的用户界面系统库堆栈代码。
具体的,确定各个系统库堆栈代码对应的出现次数,筛选出出现次数达到设定的次数阈值的用户界面系统库堆栈代码,并将这些用户界面系统库堆栈代码加入聚类处理的考量中,将出现次数未达到设定的次数阈值的用户界面系统库堆栈代码筛除。
例如,将检测时间间隔设置为3s,将采集时间间隔设置为0.3s,将次数阈值设置为5次,那么在一次采集时间间隔对应的采集周期中,用户界面系统库堆栈代码对应的内存地址出现5次才被加入聚类处理的考量中,即把出现的总时间或次数达到百分之50的用户界面系统库堆栈代码才加入聚类处理考量。
本实施例将出现次数未达到设定的次数阈值的用户界面系统库堆栈代码筛除,提高软件堆栈代码在聚类处理中的比重,强调软件程序自身代码在聚类中扮演的重要性,更利于对软件程序本身的卡顿原因分析。
S306:基于筛选出的所述系统库堆栈代码和所述软件堆栈代码,确定所述卡顿日志文件的聚类键值。
在完成对系统库堆栈代码的筛选后,进一步基于筛选出的系统库堆栈代码和软件堆栈代码,确定卡顿日志文件的聚类键值。具体的,本实施例提供的对聚类键值的确定包括步骤S3061-S3064:
S3061:对于每个所述卡顿日志文件,按照设定的最大获取行数,依据筛选出的所述系统库堆栈代码和所述软件堆栈代码,在所述聚合调用堆栈中进行堆栈代码提取。
具体的,对于每个卡顿日志文件,按照设定的最大获取行数(例如5行),按照对应聚合调用堆栈中各行堆栈代码的顺序,依据筛选出的系统库堆栈代码和软件堆栈代码,在聚合调用堆栈中进行堆栈代码提取。可以理解的是,提取出的软件堆栈代码为该卡顿日志文件筛选出的系统库堆栈代码和/或软件堆栈代码,并且提取的堆栈代码的行数不超过设定的最大获取行数。
S3062:判断是否成功提取堆栈代码。若是,跳转至步骤S3063,否则跳转至步骤S3064:
可以理解的是,对于每个卡顿日志文件,在卡顿日志文件中记录有出现次数达到设定的次数阈值的用户界面系统库堆栈代码或软件堆栈代码时,可成功提取堆栈代码,并跳转至步骤S3063。
而在卡顿日志文件中仅记录非用户界面系统库堆栈代码和/或出现次数未达到设定的次数阈值的用户界面系统库堆栈代码时,堆栈代码提取失败,并跳转至步骤S3064。
S3063:将提取到的所述堆栈代码作为所述卡顿日志文件的聚类键值。
具体的,对于每一个卡顿日志文件,若堆栈代码提取成功,则直接将提取到的堆栈代码作为该卡顿日志文件的聚类键值。
S3064:将所述卡顿日志文件的聚类键值确定为环境因素对应的聚类键值。
具体的,对于每一个卡顿日志文件,若堆栈代码提取失败,则为该卡顿日志文件分配一个对应于环境因素的聚类键值。其中环境因素可以是移动端温度、移动端硬件性能等。
S307:基于所述聚类键值对多个所述卡顿日志文件进行聚类处理。
具体的,在确定每个卡顿日志文件的聚类键值后,基于聚类键值对这些卡顿日志文件进行聚类处理,将聚类键值相同的卡顿日志文件归类到相同的聚类分类中。
在一个可能的实施例中,在基于所述聚类键值对多个所述卡顿日志文件进行聚类处理时,具体为:去除所述聚合调用堆栈对应的所述出现次数,基于所述聚类键值对多个所述卡顿日志文件进行聚类处理。
可以理解的是,对于相同的卡顿原因,存在由于系统问题导致主线程的不同调用堆栈中相同内存地址的出现次数不同的情况,或者是由于主线程的调用堆栈的采集起始时间点的不同,出现采集到的主线程的不同调用堆栈中相同内存地址出现次数不一致的情况,但是这些主线程的调用堆栈均对应同一类卡顿。
本实施例在对卡顿日志文件进行聚类处理时,将聚合调用堆栈对应的出现次数去除,不将出现次数加入聚类处理的考量中,减少对应相同卡顿原因的卡顿日志文件被归类到不同聚类类别的情况。
上述,通过在移动端按照采集时间间隔获取主线程的聚合调用堆栈,并对聚合调用堆栈进行聚合处理,同时,按照检测时间间隔检测主线程是否发生卡顿事件,并在发生卡顿事件时将这段时间采集的聚合调用堆栈保存为卡顿日志文件,并向服务器上传,并由服务器对接收到的卡顿日志文件进行符号化和聚类处理,在卡顿日志文件采集阶段通过聚合处理,将相同的聚合调用堆栈聚合在一起,减少最终生成的卡顿日志过于冗长的情况,使得卡顿日志文件的阅读更简单,方便对卡顿原因进行定位,并且通过对各个卡顿日志文件进行符号化和聚类处理,减少卡顿日志文件重复阅读的情况,减少卡顿分析的时间成本,有效提高卡顿原因分析的效率。同时,在对卡顿日志文件进行聚类处理时,将非用户界面系统库堆栈代码、出现次数未达到设定的次数阈值的用户界面系统库堆栈代码以及内存地址的出现次数排除在聚类处理的考量之外,减少非软件程序原因对聚类处理造成的影响,提高聚类处理的正确率,有效提高卡顿原因分析效率。并且通过聚类键值对卡顿日志文件进行聚类处理,将同一类卡顿原因对应的卡顿日志文件归类到一起,减少了对同一卡顿原因的重复分析的情况,降低了卡顿查找定位的时间成本。
在一个可能的实施例中,在基于所述聚类键值对多个所述卡顿日志文件进行聚类处理之后,还包括:
S308:确定聚类处理后的每个聚类类别中,各个所述卡顿日志文件对应的哈希值信息。
S309:基于所述哈希值信息对各个聚类类别对应的所述卡顿日志文件进行聚类处理。
具体的,对于聚类处理后的各个聚类类别,计算每个聚类类别下各个卡顿日志文件对应的哈希值信息。进一步的,基于哈希值信息,对各个聚类类别下的卡顿日志文件进行聚类处理,将每个聚类类别中哈希值信息相同的卡顿日志文件归类到一起,从而实现对卡顿日志文件的二级聚类处理(其中基于聚类键值对卡顿日志文件进行聚类处理为一级聚类处理)。
进一步的,按照二级聚类处理对应的二级聚类类别,对卡顿日志文件进行分级保存及展示。可响应于对一级聚类类别的选择,展示对应一级聚类类别下的各个二级聚类类别,并响应于对二级聚类类别的选择,展示该二级聚类类别下的全部卡顿日志文件,开发人员可基于卡顿日志进行卡顿原因分析。通过二级聚类处理进一步对卡顿日志文件进行细化归类,进一步提高卡顿原因分析效率。
图4给出了本申请实施例提供的一种应用于移动端的卡顿日志信息收集装置的结构示意图。如图4所示,该卡顿日志信息收集装置包括堆栈采集模块41、卡顿检测模块42和日志上传模块43。
其中,所述堆栈采集模块41,用于按照设定的采集时间间隔,获取主线程的调用堆栈,并对所述主线程的调用堆栈进行聚合处理得到聚合调用堆栈;所述卡顿检测模块42,用于按照设定的检测时间间隔,检测所述主线程是否发生卡顿事件,并响应于所述主线程发生卡顿事件,将所述聚合调用堆栈保存为卡顿日志文件,所述检测时间间隔大于所述采集时间间隔;所述日志上传模块43,用于向服务器上传所述卡顿日志文件,由所述服务器对所述卡顿日志文件进行符号化处理和聚类处理。
上述,通过在移动端按照采集时间间隔获取主线程的聚合调用堆栈,并对聚合调用堆栈进行聚合处理,同时,按照检测时间间隔检测主线程是否发生卡顿事件,并在发生卡顿事件时将这段时间采集的聚合调用堆栈保存为卡顿日志文件,并向服务器上传,并由服务器对接收到的卡顿日志文件进行符号化和聚类处理,在卡顿日志文件采集阶段通过聚合处理,将相同的聚合调用堆栈聚合在一起,减少最终生成的卡顿日志过于冗长的情况,使得卡顿日志文件的阅读更简单,方便对卡顿原因进行定位,并且通过对各个卡顿日志文件进行符号化和聚类处理,减少卡顿日志文件重复阅读的情况,减少卡顿分析的时间成本,有效提高卡顿原因分析的效率。
图5给出了本申请实施例提供的一种应用于服务器的卡顿日志信息收集装置的结构示意图。如图5所示,该卡顿日志信息收集装置包括符号化处理模块51、堆栈筛选模块52和日志聚类模块53。
其中,所述符号化处理模块51,用于确定移动端上传的多个卡顿日志文件中的聚合调用堆栈,并对所述聚合调用堆栈进行符号化,所述聚合调用堆栈由所述移动端对主线程的调用堆栈进行收集并进行聚合处理得到,并由所述移动端在所述主线程发生卡顿事件时保存为所述卡顿日志文件,所述聚合调用堆栈记录的堆栈代码包括系统库堆栈代码和软件堆栈代码;所述堆栈筛选模块52,用于确定所述聚合调用堆栈中的系统库堆栈代码,并在所述系统库堆栈代码中筛选出卡顿相关的系统库堆栈代码;所述日志聚类模块53,用于基于筛选出的所述系统库堆栈代码和所述软件堆栈代码,对多个所述卡顿日志文件进行聚类处理。
上述,通过在移动端按照采集时间间隔获取主线程的聚合调用堆栈,并对聚合调用堆栈进行聚合处理,同时,按照检测时间间隔检测主线程是否发生卡顿事件,并在发生卡顿事件时将这段时间采集的聚合调用堆栈保存为卡顿日志文件,并向服务器上传,并由服务器对接收到的卡顿日志文件进行符号化和聚类处理,在卡顿日志文件采集阶段通过聚合处理,将相同的聚合调用堆栈聚合在一起,减少最终生成的卡顿日志过于冗长的情况,使得卡顿日志文件的阅读更简单,方便对卡顿原因进行定位,并且通过对各个卡顿日志文件进行符号化和聚类处理,减少卡顿日志文件重复阅读的情况,减少卡顿分析的时间成本,有效提高卡顿原因分析的效率。
本申请实施例还提供了一种卡顿日志信息收集设备,该卡顿日志信息收集设备可集成本申请实施例提供的应用于移动端的卡顿日志信息收集装置或应用于服务器的卡顿日志信息收集装置。图6是本申请实施例提供的一种卡顿日志信息收集设备的结构示意图。参考图6,该卡顿日志信息收集设备包括:输入装置63、输出装置64、存储器62以及一个或多个处理器61;所述存储器62,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器61执行,使得所述一个或多个处理器61实现如上述实施例提供的卡顿日志信息收集方法。上述提供的卡顿日志信息收集装置、设备和计算机可用于执行上述任意实施例提供的卡顿日志信息收集方法,具备相应的功能和有益效果。
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行上述任意实施例提供的卡顿日志信息收集方法。当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的卡顿日志信息收集方法,还可以执行本申请任意实施例所提供的卡顿日志信息收集方法中的相关操作。上述实施例中提供的卡顿日志信息收集装置、设备及存储介质可执行本申请任意实施例所提供的卡顿日志信息收集方法,未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的卡顿日志信息收集方法。
上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。

Claims (14)

1.一种卡顿日志信息收集方法,应用于移动端,其特征在于,包括:
按照设定的采集时间间隔,获取主线程的调用堆栈,并对所述主线程的调用堆栈进行聚合处理得到聚合调用堆栈;
按照设定的检测时间间隔,检测所述主线程是否发生卡顿事件,并响应于所述主线程发生卡顿事件,将所述聚合调用堆栈保存为卡顿日志文件,所述检测时间间隔大于所述采集时间间隔;
向服务器上传所述卡顿日志文件,由所述服务器对所述卡顿日志文件进行符号化处理和聚类处理。
2.根据权利要求1所述的卡顿日志信息收集方法,其特征在于,所述按照设定的采集时间间隔,获取主线程的调用堆栈,并对所述主线程的调用堆栈进行聚合处理得到聚合调用堆栈,包括:
按照设定的采集时间间隔,通过检测子线程从寄存器获取主线程的调用堆栈;
基于所述主线程的调用堆栈对应的内存地址,对所述主线程的调用堆栈进行聚合处理,并记录所述内存地址的出现次数,以得到聚合调用堆栈。
3.根据权利要求1所述的卡顿日志信息收集方法,其特征在于,所述按照设定的检测时间间隔,检测所述主线程是否发生卡顿事件,包括:
按照设定的检测时间间隔,通过检测子线程向所述主线程发送测试数据包;
根据所述主线程是否基于所述测试数据包进行答复,确定所述主线程是否发生卡顿事件。
4.一种卡顿日志信息收集方法,应用于服务器,其特征在于,包括:
确定移动端上传的多个卡顿日志文件中的聚合调用堆栈,并对所述聚合调用堆栈进行符号化,所述聚合调用堆栈由所述移动端对主线程的调用堆栈进行收集并进行聚合处理得到,并由所述移动端在所述主线程发生卡顿事件时保存为所述卡顿日志文件,所述聚合调用堆栈记录的堆栈代码包括系统库堆栈代码和软件堆栈代码;
确定所述聚合调用堆栈中的系统库堆栈代码,并在所述系统库堆栈代码中筛选出卡顿相关的系统库堆栈代码;
基于筛选出的所述系统库堆栈代码和所述软件堆栈代码,对多个所述卡顿日志文件进行聚类处理。
5.根据权利要求4所述的卡顿日志信息收集方法,其特征在于,所述确定移动端上传的卡顿日志文件中的聚合调用堆栈,并对所述聚合调用堆栈进行符号化,包括:
确定移动端上传的卡顿日志文件中的聚合调用堆栈,所述聚合调用堆栈以内存地址的形式进行表示;
依据设定的符号表记录的内存地址与函数表示符号之间的对应关系,对所述聚合调用堆栈进行符号化,从而以函数表示符号的形式表示所述聚合调用堆栈。
6.根据权利要求4所述的卡顿日志信息收集方法,其特征在于,所述确定所述聚合调用堆栈中的系统库堆栈代码,并在所述系统库堆栈代码中筛选出卡顿相关的系统库堆栈代码,包括:
根据所述聚合调用堆栈对应的函数表示符号,确定所述聚合调用堆栈中的系统库堆栈代码,所述系统库堆栈代码包括用户界面系统库堆栈代码和非用户界面系统库堆栈代码;
筛除所述系统库堆栈代码中的非用户界面系统库堆栈代码;
筛选出所述系统库堆栈代码中,出现次数达到设定的次数阈值的用户界面系统库堆栈代码。
7.根据权利要求4所述的卡顿日志信息收集方法,其特征在于,所述基于筛选出的所述系统库堆栈代码和所述软件堆栈代码,对多个所述卡顿日志文件进行聚类处理,包括:
基于筛选出的所述系统库堆栈代码和所述软件堆栈代码,确定所述卡顿日志文件的聚类键值;
基于所述聚类键值对多个所述卡顿日志文件进行聚类处理。
8.根据权利要求7所述的卡顿日志信息收集方法,其特征在于,所述基于筛选出的所述系统库堆栈代码和所述软件堆栈代码,确定所述卡顿日志文件的聚类键值,包括:
对于每个所述卡顿日志文件,按照设定的最大获取行数,依据筛选出的所述系统库堆栈代码和所述软件堆栈代码,在所述聚合调用堆栈中进行堆栈代码提取;
若堆栈代码提取成功,则将提取到的所述堆栈代码作为所述卡顿日志文件的聚类键值;
若对战提取失败,则将所述卡顿日志文件的聚类键值确定为环境因素对应的聚类键值。
9.根据权利要求7所述的卡顿日志信息收集方法,其特征在于,所述聚合调用堆栈以内存地址的形式进行表示,并且所述聚合调用堆栈记录有各个内存地址的出现次数;
所述基于所述聚类键值对多个所述卡顿日志文件进行聚类处理,包括:
去除所述聚合调用堆栈对应的所述出现次数,基于所述聚类键值对多个所述卡顿日志文件进行聚类处理。
10.根据权利要求7所述的卡顿日志信息收集方法,其特征在于,所述基于所述聚类键值对多个所述卡顿日志文件进行聚类处理之后,还包括:
确定聚类处理后的每个聚类类别中,各个所述卡顿日志文件对应的哈希值信息;
基于所述哈希值信息对各个聚类类别对应的所述卡顿日志文件进行聚类处理。
11.一种卡顿日志信息收集装置,应用于移动端,其特征在于,包括堆栈采集模块、卡顿检测模块和日志上传模块,其中:
所述堆栈采集模块,用于按照设定的采集时间间隔,获取主线程的调用堆栈,并对所述主线程的调用堆栈进行聚合处理得到聚合调用堆栈;
所述卡顿检测模块,用于按照设定的检测时间间隔,检测所述主线程是否发生卡顿事件,并响应于所述主线程发生卡顿事件,将所述聚合调用堆栈保存为卡顿日志文件,所述检测时间间隔大于所述采集时间间隔;
所述日志上传模块,用于向服务器上传所述卡顿日志文件,由所述服务器对所述卡顿日志文件进行符号化处理和聚类处理。
12.一种卡顿日志信息收集装置,应用于服务器,其特征在于,包括符号化处理模块、堆栈筛选模块和日志聚类模块,其中:
所述符号化处理模块,用于确定移动端上传的多个卡顿日志文件中的聚合调用堆栈,并对所述聚合调用堆栈进行符号化,所述聚合调用堆栈由所述移动端对主线程的调用堆栈进行收集并进行聚合处理得到,并由所述移动端在所述主线程发生卡顿事件时保存为所述卡顿日志文件,所述聚合调用堆栈记录的堆栈代码包括系统库堆栈代码和软件堆栈代码;
所述堆栈筛选模块,用于确定所述聚合调用堆栈中的系统库堆栈代码,并在所述系统库堆栈代码中筛选出卡顿相关的系统库堆栈代码;
所述日志聚类模块,用于基于筛选出的所述系统库堆栈代码和所述软件堆栈代码,对多个所述卡顿日志文件进行聚类处理。
13.一种卡顿日志信息收集设备,其特征在于,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-10任一项所述的卡顿日志信息收集方法。
14.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-10任一项所述的卡顿日志信息收集方法。
CN202110156794.0A 2021-02-04 2021-02-04 一种卡顿日志信息收集方法、装置、设备及存储介质 Pending CN112860469A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110156794.0A CN112860469A (zh) 2021-02-04 2021-02-04 一种卡顿日志信息收集方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110156794.0A CN112860469A (zh) 2021-02-04 2021-02-04 一种卡顿日志信息收集方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN112860469A true CN112860469A (zh) 2021-05-28

Family

ID=75988722

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110156794.0A Pending CN112860469A (zh) 2021-02-04 2021-02-04 一种卡顿日志信息收集方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112860469A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113722435A (zh) * 2021-08-30 2021-11-30 平安科技(深圳)有限公司 基于监督学习的分类方法、装置、设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113722435A (zh) * 2021-08-30 2021-11-30 平安科技(深圳)有限公司 基于监督学习的分类方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN109284269B (zh) 异常日志分析方法、装置、存储介质及服务器
CN111240876B (zh) 微服务的故障定位方法、装置、存储介质及终端
CN114077525A (zh) 异常日志处理方法、装置、终端设备、云服务器及系统
CN105022694A (zh) 用于移动终端测试的测试用例生成方法及系统
CN114996103A (zh) 页面异常检测方法、装置、电子设备和存储介质
CN111090593A (zh) 确定崩溃归属的方法、装置、电子设备及存储介质
CN112860469A (zh) 一种卡顿日志信息收集方法、装置、设备及存储介质
CN114968959A (zh) 日志处理方法、日志处理装置及存储介质
CN114048099A (zh) Java应用监控方法及装置、存储介质及电子设备
CN105786679B (zh) 一种自动化测试监控系统及方法以及移动终端
CN112948262A (zh) 一种系统测试方法、装置、计算机设备和存储介质
CN110311806B (zh) 一种移动应用程序界面响应延迟诊断方法、系统及终端
CN111552618A (zh) 一种收集日志的方法及设备
CN112783711A (zh) NodeJS上程序内存分析的方法、存储介质
CN112543127A (zh) 一种微服务架构的监控方法及装置
CN112445687A (zh) 一种计算设备的卡顿检测方法及相关装置
CN115309661A (zh) 一种应用测试方法、装置、电子设备及可读存储介质
CN111737158B (zh) 一种异常断言的处理方法、装置、电子设备及存储介质
CN113468029A (zh) 日志管理方法、装置、电子设备和可读存储介质
CN113110870A (zh) 一种资源打包管理方法、装置、设备及存储介质
CN113190458A (zh) 自动埋点数据分析的方法、装置、计算机设备和存储介质
CN111427858A (zh) 日志处理系统及其处理方法
CN113037521A (zh) 识别通讯设备状态的方法、通讯系统及存储介质
CN113590047B (zh) 数据库的筛查方法、装置、电子设备及存储介质
CN112783763B (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