CN114064378A - 一种应用程序耗时的分析方法、装置、设备及存储介质 - Google Patents
一种应用程序耗时的分析方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114064378A CN114064378A CN202010746359.9A CN202010746359A CN114064378A CN 114064378 A CN114064378 A CN 114064378A CN 202010746359 A CN202010746359 A CN 202010746359A CN 114064378 A CN114064378 A CN 114064378A
- Authority
- CN
- China
- Prior art keywords
- time
- application program
- target application
- function
- consuming
- 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
- 238000004458 analytical method Methods 0.000 title claims abstract description 51
- 230000006870 function Effects 0.000 claims abstract description 149
- 238000000034 method Methods 0.000 claims abstract description 69
- 230000008569 process Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 4
- 239000003795 chemical substances by application Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 239000000523 sample Substances 0.000 description 3
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000011230 binding agent Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开提供了一种应用程序耗时的分析方法、装置、设备及存储介质,所述方法包括:通过钩子技术代理目标应用程序中的耗时目标函数,以便在所述耗时目标函数执行的开始时刻和结束时刻分别插桩;其中,所述耗时目标函数包括跨进程调用函数和/或输入输出调用函数族;基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。由于本公开结合钩子技术和插桩技术,能够采集到跨进程调用函数和输入输出调用函数族等函数的追踪数据,使得用于应用程序耗时分析的数据更加的多元化,因此,基于更加多元化的数据对应用程序耗时进行分析,能够提高应用程序耗时原因定位的准确性。
Description
技术领域
本公开涉及数据处理领域,尤其涉及一种应用程序耗时的分析方法、装置、设备及存储介质。
背景技术
应用程序耗时主要包括应用程序的启动阶段耗时和运行阶段耗时,由于各种原因可能导致应用程序耗时增加,影响应用程序用户的使用体验。为此,如何准确定位到应用程序耗时增加的原因,以便快速解决应用程序耗时问题,越来越受到相关人员的关注。
目前,由于能够获取到的耗时相关信息单一,通常只包含应用程序中常规函数的耗时数据,因此,对于其他场景如非常规函数运行导致的应用程序耗时增加的原因,目前仍无法准确定位。
因此,如何提高应用程序耗时原因定位的准确性,是目前亟需解决的技术问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种音量推荐方法、装置、设备及存储介质,能够有效降低音量不适感,提升用户体验。
本公开提供了一种应用程序耗时的分析方法,所述方法包括:
通过钩子技术代理目标应用程序中的耗时目标函数;其中,所述耗时目标函数包括跨进程调用函数和/或输入输出调用函数族;
基于对所述耗时目标函数的代理,在所述耗时目标函数执行的开始时刻和结束时刻分别插桩;
基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
一种可选的实施方式中,所述基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析之前,还包括:
通过所述钩子技术代理所述目标应用程序中的写函数;其中,所述预设类型数据包括通过所述插桩采集到的追踪数据;
基于对所述写函数的代理,在所述写函数执行的过程中将预设类型数据写入预设追踪文件中;
相应的,所述基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析,包括:
基于所述预设追踪文件中的所述追踪数据,对所述目标应用程序的耗时进行分析。
一种可选的实施方式中,所述基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析之前,还包括:
将目标应用程序中的虚拟机锁信息开关设置为打开状态;
对所述目标应用程序的锁信息进行采集;
相应的,所述基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析,包括:
基于采集到的锁信息和通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
一种可选的实施方式中,所述通过钩子技术代理目标应用程序中的耗时目标函数之前,还包括:
将目标应用程序中的插桩开关设置为打开状态;其中,所述插桩开关为打开状态表示所述目标应用程序允许插桩操作。
一种可选的实施方式中,所述基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析之前,还包括:
在预设函数执行的开始时刻和结束时刻分别插桩;
通过所述插桩采集所述预设函数对应的追踪数据;
相应的,所述基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析,包括:
基于所述预设函数对应的追踪数据和通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
第二方面,本公开还提供了一种应用程序耗时的分析装置,所述装置包括:
第一代理模块,用于通过钩子技术代理目标应用程序中的耗时目标函数;其中,所述耗时目标函数包括跨进程调用函数和/或输入输出调用函数族;
插桩模块,用于基于对所述耗时目标函数的代理,在所述耗时目标函数执行的开始时刻和结束时刻分别插桩;
分析模块,用于基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
一种可选的实施方式中,所述装置还包括:
第二代理模块,用于通过所述钩子技术代理所述目标应用程序中的写函数;其中,所述预设类型数据包括通过所述插桩采集到的追踪数据;
写入模块,用于基于对所述写函数的代理,在所述写函数执行的过程中将预设类型数据写入预设追踪文件中;
相应的,所述分析模块,具体用于:
基于所述预设追踪文件中的所述追踪数据,对所述目标应用程序的耗时进行分析。
一种可选的实施方式中,所述装置还包括:
第一设置模块,用于将目标应用程序中的虚拟机锁信息开关设置为打开状态;
采集模块,用于对所述目标应用程序的锁信息进行采集;
相应的,所述分析模块,具体用于:
基于采集到的锁信息和通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
第三方面,本公开提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现上述的方法。
第四方面,本公开提供了一种设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述的方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例提供了一种应用程序耗时的分析方法,首先,通过钩子技术代理目标应用程序中的耗时目标函数,以便在耗时目标函数执行的开始时刻和结束时刻分别插桩,其中,耗时目标函数可以包括跨进程调用函数和/或输入输出调用函数族。然后,基于通过插桩采集到的追踪数据,对目标应用程序的耗时进行分析,实现对应用程序耗时原因的定位。由于本公开实施例结合钩子技术和插桩技术,能够采集到跨进程调用函数和输入输出调用函数族等函数的追踪数据,使得用于应用程序耗时分析的数据更加的多元化,因此,基于更加多元化的数据对应用程序耗时进行分析,能够提高应用程序耗时原因定位的准确性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种应用程序耗时的分析方法流程图;
图2为本公开实施例提供的一种应用程序耗时的分析装置结构示意图;
图3为本公开实施例提供的一种应用程序耗时的分析设备结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
实际应用中,由于导致应用程序耗时的原因较多,因此,用于应用程序耗时分析的数据越多元化,相应的,对应用程序耗时原因定位越准确。
基于此,本公开提供了一种应用程序耗时的分析方法,可以通过钩子技术代理目标应用程序中的耗时目标函数,以便在耗时目标函数执行的开始时刻和结束时刻分别插桩,其中,耗时目标函数包括但不限于跨进程调用函数和输入输出调用函数族。然后,基于通过插桩采集到的的追踪数据,对目标应用程序的耗时进行分析,最终完成应用程序耗时原因的定位。
由于本公开实施例结合钩子技术和插桩技术,能够采集到跨进程调用函数和输入输出调用函数族等非常规函数的追踪数据,使得用于应用程序耗时分析的数据更加的多元化,因此,基于更加多元化的数据对应用程序耗时进行分析,能够提高应用程序耗时原因定位的准确性。
基于此,本公开实施例提供了一种应用程序耗时的分析方法,参考图1,为本公开实施例提供的一种应用程序耗时的分析方法流程图,其中,该方法包括:
S101:通过钩子技术代理目标应用程序中的耗时目标函数;其中,所述耗时目标函数包括跨进程调用函数和/或输入输出调用函数族。
钩子技术,也称为hook技术,是指在对特定的系统事件进行hook后,一旦发生已hook事件,则对该事件进行hook的程序就会受到系统的通知,这时该程序就能在第一时间对该事件做出响应。
S102:基于对所述耗时目标函数的代理,在所述耗时目标函数执行的开始时刻和结束时刻分别插桩;
插桩技术,是指在保证被测程序原有逻辑完整性的基础上,在程序中插入一些探针,又称为“探测仪”,本质上是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用等。通过探针的执行抛出程序运行的特征数据,然后通过对这些特征数据的分析,可以获得程序的控制流和数据流信息等,用于应用程序耗时的分析。
本公开实施例中,通过钩子技术代理目标应用程序中的耗时目标函数,在耗时目标函数执行的开始时刻通知系统,以便在该开始时刻做出插桩的响应,另外,在耗时目标函数执行的结束时刻通知系统,以便在该结束时刻也做出插桩的响应。
值得注意的是,在对耗时目标函数进行插桩之前,首先将目标应用程序中的插桩开关设置为打开状态,以便目标应用程序允许插桩操作。
由于耗时目标函数执行的开始时刻和结束时刻均实现插桩,因此可以通过插桩采集到耗时目标函数的执行过程对应的追踪数据,通常追踪数据也称为trace数据,包括耗时目标函数执行过程中的耗时相关数据,例如耗时目标函数从执行开始到结束的耗时等。
由于跨进程调用事件的耗时可能影响应用程序的耗时,因此,本公开实施例可以将跨进程调用函数确定为耗时目标函数,跨进程调用函数例如可以为动态库so中的Bindertransact函数,通过钩子技术代理跨进程调用函数,在跨进程调用函数执行的开始时刻和结束时刻分别插桩,以通过采集插桩采集到跨进程调用函数对应的追踪数据,用于应用程序耗时的分析。
另外,由于输入输出调用函数族的耗时也可能影响应用程序的耗时,因此,本公开实施例还可以将输入输出调用函数族也确定为耗时目标函数,输入输出调用函数族例如可以为动态库so中的I/O调用函数族,其中,I/O调用函数族是指I/O调用函数的集合。实际应用中,通过钩子技术代理I/O调用函数族,在I/O调用函数族执行的开始时刻和结束时刻分别插桩,以通过采集插桩采集到的I/O调用函数族对应的追踪数据,用于应用程序耗时的分析。
值得注意的是,本公开实施例还可以将应用程序中可能影响应用程序耗时的其他函数也确定为耗时目标函数,进而通过钩子技术和插桩技术,采集到相关的追踪数据,用于应用程序耗时的分析,以增加数据的多元化。
另外,对于应用程序中的常规函数,本公开实施例也可以通过插桩的方式获取相关的追踪数据,用于应用程序耗时的分析。
具体的,本公开实施例可以在预设函数执行的开始时刻和结束时刻分别插桩,并通过插桩采集预设函数对应的追踪数据,从而结合预设函数对应的追踪数据与通过插桩采集到的跨进程调用函数和/或输入输出调用函数族对应的追踪数据,对目标应用程序的耗时进行分析。其中,预设函数可以为应用程序中的各种常规函数,在此不再具体介绍。
另外,本公开实施例可以利用MTrace插桩、ATrace插桩等插桩工具实现上述插桩操作,本公开实施例不限制具体的插桩方式。
S103:基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
本公开实施例中,通过插桩采集到追踪数据之后,可以将追踪数据直接写入预设追踪文件中,以便用于应用程序耗时的分析。
一种可选的实施方式中,可以通过钩子技术代理目标应用程序中的写函数,并基于对写函数的代理,在写函数执行的过程中将预设类型数据写入预设追踪文件中;其中,所述预设类型数据包括通过所述插桩采集到的追踪数据。
通常,写函数需要将插桩采集到的追踪数据先写入系统内核,然后再从内核中读取后上传至服务端,用于应用程序耗时的分析。为了提高应用程序耗时的分析效率,本公开实施例可以利用钩子技术控制写函数将通过插桩采集到的追踪数据直接写入预设追踪文件中,无需经过向系统内核的写入写出,提高了应用程序耗时的分析效率。
实际应用中,通过钩子技术代理目标应用程序的动态库so中的write函数,以便在write函数执行写入操作时将通过插桩采集到的追踪数据写入预设追踪文件中。其中,通过插桩采集到的追踪数据是指当前需要向trace_marker fd写入的数据,即write函数将需要向trace_marker fd写入的数据实际写入预设追踪文件中。
本公开实施例中,在对目标应用程序的耗时进行分析之前,首先从预设追踪文件中获取追踪数据,然后对获取到的追踪数据进行统一的格式化处理,并将处理后的追踪数据存储为HTML文件。通过浏览器打开HTML文件后,基于HTML中的追踪数据对目标应用程序的耗时进行分析。具体的耗时分析方法在本公开实施例中不做限定。
由于本公开实施例结合钩子技术和插桩技术,能够采集到跨进程调用函数和输入输出调用函数族等非常规函数的追踪数据,使得用于应用程序耗时分析的数据更加的多元化,因此,基于更加多元化的数据对应用程序耗时进行分析,能够提高应用程序耗时原因定位的准确性。
为了使得用于应用程序耗时分析的数据更加多元化,进而提高应用程序耗时原因定位的准确性,本公开实施例还可以采集目标应用程序中的锁信息,用于应用程序耗时分析。
具体的,将目标应用程序中的虚拟机锁信息开关设置为打开状态,并对目标应用程序中的锁信息进行采集。其中,在虚拟机锁信息开关为打开状态时,允许对目标应用程序的锁信息进行采集。
一种可选的实施方式中,通过操作系统中的dlsym标准函数,查找目标应用程序中的虚拟机锁信息开关,然后将虚拟机锁信息开关设置为打开状态。在虚拟机锁信息开关为打开状态时,可以采集目标应用程序中的锁信息,基于采集到的锁信息和通过插桩采集到的跨进程调用函数和/或输入输出调用函数族对应的追踪数据,对目标应用程序的耗时进行分析,最终实现目标应用程序耗时原因的定位。
本公开实施例结合钩子技术和插桩技术,不仅能够采集到跨进程调用函数和输入输出调用函数族等非常规函数的追踪数据,还能够采集到锁信息等数据,使得用于应用程序耗时分析的数据更加的多元化,因此,基于更加多元化的数据对应用程序耗时进行分析,能够进一步提高应用程序耗时原因定位的准确性。
与上述方法实施例相对应的,本公开实施例还提供了一种应用程序耗时的分析装置,参考图2,为本公开实施例提供的一种应用程序耗时的分析装置结构示意图。该装置包括:
第一代理模块201,用于通过钩子技术代理目标应用程序中的耗时目标函数;其中,所述耗时目标函数包括跨进程调用函数和/或输入输出调用函数族;
插桩模块202,用于基于对所述耗时目标函数的代理,在所述耗时目标函数执行的开始时刻和结束时刻分别插桩;
分析模块203,用于基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
一种可选的实施方式中,所述装置还包括:
第二代理模块,用于通过所述钩子技术代理所述目标应用程序中的写函数;其中,所述预设类型数据包括通过所述插桩采集到的追踪数据;
写入模块,用于基于对所述写函数的代理,在所述写函数执行的过程中将预设类型数据写入预设追踪文件中;
相应的,所述分析模块,具体用于:
基于所述预设追踪文件中的所述追踪数据,对所述目标应用程序的耗时进行分析。
一种可选的实施方式中,所述装置还包括:
第一设置模块,用于将目标应用程序中的虚拟机锁信息开关设置为打开状态;
采集模块,用于对所述目标应用程序的锁信息进行采集;
相应的,所述分析模块,具体用于:
基于采集到的锁信息和通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
一种可选的实施方式中,所述装置还包括:
第二设置模块,用于将目标应用程序中的插桩开关设置为打开状态;其中,所述插桩开关为打开状态表示所述目标应用程序允许插桩操作。
另一种可选的实施方式中,所述装置还包括:
分别插桩模块,用于在预设函数执行的开始时刻和结束时刻分别插桩;
数据采集模块,用于通过所述插桩采集所述预设函数对应的追踪数据;
相应的,所述分析模块,具体用于:
基于所述预设函数对应的追踪数据和通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
本公开实施例提供的应用程序耗时的分析装置,可以通过钩子技术代理目标应用程序中的耗时目标函数,以便在耗时目标函数执行的开始时刻和结束时刻分别插桩,其中,耗时目标函数包括但不限于跨进程调用函数和输入输出调用函数族。然后,基于通过插桩采集到的的追踪数据,对目标应用程序的耗时进行分析,最终完成应用程序耗时原因的定位。由于本公开实施例结合钩子技术和插桩技术,能够采集到跨进程调用函数和输入输出调用函数族等非常规函数的追踪数据,使得用于应用程序耗时分析的数据更加的多元化,因此,基于更加多元化的数据对应用程序耗时进行分析,能够提高应用程序耗时原因定位的准确性。
另外,本公开实施例还提供了一种应用程序耗时的分析设备,参见图3所示,可以包括:
处理器301、存储器302、输入装置303和输出装置304。应用程序耗时的分析设备中的处理器301的数量可以一个或多个,图3中以一个处理器为例。在本发明的一些实施例中,处理器301、存储器302、输入装置303和输出装置304可通过总线或其它方式连接,其中,图3中以通过总线连接为例。
存储器302可用于存储软件程序以及模块,处理器301通过运行存储在存储器302的软件程序以及模块,从而执行应用程序耗时的分析设备的各种功能应用以及数据处理。存储器302可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储器302可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入装置303可用于接收输入的数字或字符信息,以及产生与应用程序耗时的分析设备的用户设置以及功能控制有关的信号输入。
具体在本实施例中,处理器301会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器302中,并由处理器301来运行存储在存储器302中的应用程序,从而实现上述应用程序耗时的分析设备的各种功能。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种应用程序耗时的分析方法,其特征在于,所述方法包括:
通过钩子技术代理目标应用程序中的耗时目标函数;其中,所述耗时目标函数包括跨进程调用函数和/或输入输出调用函数族;
基于对所述耗时目标函数的代理,在所述耗时目标函数执行的开始时刻和结束时刻分别插桩;
基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
2.根据权利要求1所述的方法,其特征在于,所述基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析之前,还包括:
通过所述钩子技术代理所述目标应用程序中的写函数;其中,所述预设类型数据包括通过所述插桩采集到的追踪数据;
基于对所述写函数的代理,在所述写函数执行的过程中将预设类型数据写入预设追踪文件中;
相应的,所述基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析,包括:
基于所述预设追踪文件中的所述追踪数据,对所述目标应用程序的耗时进行分析。
3.根据权利要求1所述的方法,其特征在于,所述基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析之前,还包括:
将目标应用程序中的虚拟机锁信息开关设置为打开状态;
对所述目标应用程序的锁信息进行采集;
相应的,所述基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析,包括:
基于采集到的锁信息和通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
4.根据权利要求1所述的方法,其特征在于,所述通过钩子技术代理目标应用程序中的耗时目标函数之前,还包括:
将目标应用程序中的插桩开关设置为打开状态;其中,所述插桩开关为打开状态表示所述目标应用程序允许插桩操作。
5.根据权利要求1所述的方法,其特征在于,所述基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析之前,还包括:
在预设函数执行的开始时刻和结束时刻分别插桩;
通过所述插桩采集所述预设函数对应的追踪数据;
相应的,所述基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析,包括:
基于所述预设函数对应的追踪数据和通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
6.一种应用程序耗时的分析装置,其特征在于,所述装置包括:
第一代理模块,用于通过钩子技术代理目标应用程序中的耗时目标函数;其中,所述耗时目标函数包括跨进程调用函数和/或输入输出调用函数族;
插桩模块,用于基于对所述耗时目标函数的代理,在所述耗时目标函数执行的开始时刻和结束时刻分别插桩;
分析模块,用于基于通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二代理模块,用于通过所述钩子技术代理所述目标应用程序中的写函数;其中,所述预设类型数据包括通过所述插桩采集到的追踪数据;
写入模块,用于基于对所述写函数的代理,在所述写函数执行的过程中将预设类型数据写入预设追踪文件中;
相应的,所述分析模块,具体用于:
基于所述预设追踪文件中的所述追踪数据,对所述目标应用程序的耗时进行分析。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第一设置模块,用于将目标应用程序中的虚拟机锁信息开关设置为打开状态;
采集模块,用于对所述目标应用程序的锁信息进行采集;
相应的,所述分析模块,具体用于:
基于采集到的锁信息和通过所述插桩采集到的追踪数据,对所述目标应用程序的耗时进行分析。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现如权利要求1-5任一项所述的方法。
10.一种设备,其特征在于,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010746359.9A CN114064378A (zh) | 2020-07-29 | 2020-07-29 | 一种应用程序耗时的分析方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010746359.9A CN114064378A (zh) | 2020-07-29 | 2020-07-29 | 一种应用程序耗时的分析方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114064378A true CN114064378A (zh) | 2022-02-18 |
Family
ID=80226845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010746359.9A Pending CN114064378A (zh) | 2020-07-29 | 2020-07-29 | 一种应用程序耗时的分析方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064378A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483734A (zh) * | 2023-06-16 | 2023-07-25 | 荣耀终端有限公司 | 一种基于编译器的插桩方法、系统及相关电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649063A (zh) * | 2016-11-22 | 2017-05-10 | 腾讯科技(深圳)有限公司 | 用于监测程序运行时耗时数据的方法及系统 |
CN109388537A (zh) * | 2018-08-31 | 2019-02-26 | 阿里巴巴集团控股有限公司 | 运行信息跟踪方法、装置及计算机可读存储介质 |
CN111240937A (zh) * | 2020-01-13 | 2020-06-05 | 上海钧正网络科技有限公司 | 应用程序内方法耗时统计方法、装置、计算机设备和介质 |
-
2020
- 2020-07-29 CN CN202010746359.9A patent/CN114064378A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649063A (zh) * | 2016-11-22 | 2017-05-10 | 腾讯科技(深圳)有限公司 | 用于监测程序运行时耗时数据的方法及系统 |
CN109388537A (zh) * | 2018-08-31 | 2019-02-26 | 阿里巴巴集团控股有限公司 | 运行信息跟踪方法、装置及计算机可读存储介质 |
CN111240937A (zh) * | 2020-01-13 | 2020-06-05 | 上海钧正网络科技有限公司 | 应用程序内方法耗时统计方法、装置、计算机设备和介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483734A (zh) * | 2023-06-16 | 2023-07-25 | 荣耀终端有限公司 | 一种基于编译器的插桩方法、系统及相关电子设备 |
CN116483734B (zh) * | 2023-06-16 | 2024-03-19 | 荣耀终端有限公司 | 一种基于编译器的插桩方法、系统及相关电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9274923B2 (en) | System and method for stack crawl testing and caching | |
US8141053B2 (en) | Call stack sampling using a virtual machine | |
US8924912B2 (en) | Method of recording and replaying call frames for a test bench | |
CN100461197C (zh) | 一种恶意代码自动分析系统及方法 | |
CN110580226B (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
US7415635B1 (en) | Integrated software test framework for performance testing of a software application | |
WO2016008398A1 (zh) | 程序性能测试方法和装置 | |
US20130159977A1 (en) | Open kernel trace aggregation | |
WO2013122876A1 (en) | Code coverage rate determination method and system | |
US20100153925A1 (en) | Systems and methods for enhanced profiling of computer applications | |
CN109542341B (zh) | 一种读写io监测方法、装置、终端及计算机可读存储介质 | |
CN112988544B (zh) | 操作系统性能瓶颈的分析方法、系统、设备和存储介质 | |
CN114064378A (zh) | 一种应用程序耗时的分析方法、装置、设备及存储介质 | |
CN109634822B (zh) | 一种函数耗时统计方法、装置、存储介质及终端设备 | |
US7577557B2 (en) | Simulator and simulation method for behaviors of processors | |
CN107451038B (zh) | 硬件事件采集方法、处理器和计算系统 | |
US20150154103A1 (en) | Method and apparatus for measuring software performance | |
CN112685316A (zh) | 代码执行路径的获取方法、装置、计算机设备及存储介质 | |
CN112612697A (zh) | 一种基于字节码技术的软件缺陷测试定位方法及系统 | |
CN113127314A (zh) | 一种检测程序性能瓶颈的方法、装置及计算机设备 | |
CN106095631B (zh) | 一种基于有限状态机实现的多周期非流水线cpu动态调试方法 | |
CN115904928A (zh) | 一种慢函数监控的插桩方法、装置、设备及存储介质 | |
CN107656849B (zh) | 一种软件系统性能问题定位方法以及装置 | |
CN115964237A (zh) | 一种针对中央处理器cpu的功能及性能测试方法及装置 | |
CN114780409A (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 |