一种程序卡顿定位的方法以及相关装置制造方法及图纸

技术编号:23470505 阅读:15 留言:0更新日期:2020-03-06 12:38
本申请公开了一种卡顿定位的方法以及相关装置,通过实时获取程序运行时每个帧的执行函数,并将统计桩插入执行函数中的多个执行函数中,以得到检测函数;然后记录所述检测函数的函数信息,以确定函数执行耗时;当函数执行耗时满足预设条件时,则定位所述检测函数中对应的执行函数为卡顿发生点。从而实现了对于程序运行过程中卡顿点的确定过程,该过程不需要获取大量的数据,就可以准确定位卡顿帧的函数执行耗时和相关数据,占用资源少,提高了定位过程的稳定性,且对于终端硬件要求低,具有良好的适用范围。

A method of program positioning and related devices

【技术实现步骤摘要】
一种程序卡顿定位的方法以及相关装置
本申请涉及计算机
,尤其涉及一种程序卡顿定位的方法以及相关装置。
技术介绍
随着移动终端相关技术的发展,越来越多的智能设备出现在人们的生活中,其中,游戏是一种主要的终端应用程序,人们需要实时的掌握游戏运行过程中的运行状态以做出优化,保证游戏运行顺畅。目前,在安卓手机的Unity3D的IL2CPP版本在卡顿定位上是采用profile工具实现,这类实现方式必须编译时选择developmentBuild,此版本主要用于前期的调试和测试用,其中主要实现原理在编译中引擎插入了很多性能统计代码,方便提取内存/CPU/GPU等的性能,此统计数据是各个纬度的全量信息进行统计。当使用development版本时,在电脑端启动profiler工具,profiler工具或通过USB或者ip连接development版本,development版本会将统计每帧数据源源不断的发送给profiler工具。为统计程序的运行状态以确定卡顿原因,需要获取的数据包含较多,如:每帧的CPU利用率、内存使用情况、函数执行耗时、drawcall数等。但是,上述确定卡顿原因的过程中涉及的数据量较大,需要加入很多调试脚本,占用终端处理器的资源,对于终端的硬件要求较高,影响卡顿定位过程的稳定性及可适用性。
技术实现思路
有鉴于此,本申请第一方面提供一种卡顿定位的方法,可应用于静态数据库的系统或程序过程中,具体包括:实时获取程序运行时每个帧的执行函数,所述执行函数用于指示所述程序的运行过程;将统计桩插入多个所述执行函数,以得到检测函数;记录所述检测函数的函数信息和帧信息,所述函数信息包括函数执行耗时和调用关系数据;若所述函数执行耗时满足预设条件,则定位所述检测函数中对应的帧信息为卡顿发生点,所述预设条件基于时延阈值设定。优选的,在本申请一些可能的实现方式中,所述实时获取程序运行时每个帧的执行函数之前,所述方法还包括:获取所述程序的编译版本;根据所述编译版本反编译所述执行函数,以得到所述执行函数与函数地址的对应关系,所述函数地址用于指示所述统计桩的插入点;所述将统计桩插入多个所述执行函数,以得到检测函数,包括:根据所述插入点将所述统计桩插入多个所述执行函数,以得到所述检测函数。优选的,在本申请一些可能的实现方式中,所述若所述函数执行耗时满足预设条件,则定位所述检测函数中对应的帧信息为卡顿发生点,包括:若所述卡顿时长满足预设条件,则确定当前卡顿时长对应的执行函数为中心函数;获取在预设范围内的多个波动执行函数对应的帧信息,以定位为所述卡顿发生点,所述预设范围基于所述中心函数确定。优选的,在本申请一些可能的实现方式中,所述获取在预设范围内的多个波动执行函数对应的帧信息,以定位为所述卡顿发生点,包括:获取在所述预设范围内的多个波动执行函数;判断所述多个波动执行函数对应的卡顿时长是否均大于波动阈值,所述波动阈值对应的数值小于所述时延阈值对应的数值;若是,则将所述多个波动执行函数和所述中心函数定位为所述卡顿发生点。优选的,在本申请一些可能的实现方式中,所述定位所述检测函数中对应的执行函数为卡顿发生点之后,所述方法还包括:确定所述卡顿发生点对应的卡顿帧;关联所述卡顿与所述卡顿帧,并上报至服务器,所述服务器用于对所述卡顿发生点进行统计和展示,以得到卡顿原因。优选的,在本申请一些可能的实现方式中,所述关联所述卡顿与所述卡顿帧,并上报至服务器,包括:关联所述卡顿与所述卡顿帧,并记录对应的卡顿时长,以获取累计卡顿时长;若所述累计卡顿时长满足上报条件,则上报所述卡顿与所述卡顿帧至服务器。优选的,在本申请一些可能的实现方式中,所述卡顿定位的方法应用于终端设备,所述终端设备为区块链节点中的区块节点设备。本申请第二方面提供一种卡顿定位的装置,包括:获取单元,用于实时获取程序运行时每个帧的执行函数,所述执行函数用于指示所述程序的运行过程;插入单元,用于将统计桩插入多个所述执行函数,以得到检测函数;记录单元,用于记录所述检测函数的函数信息和帧信息,所述函数信息包括函数执行耗时和调用关系数据;定位单元,用于若所述函数执行耗时满足预设条件,则定位所述检测函数中对应的帧信息为卡顿发生点,所述预设条件基于时延阈值设定。优选的,在本申请一些可能的实现方式中,所述获取单元,还用于获取所述程序的编译版本;所述获取单元,还用于根据所述编译版本反编译所述执行函数,以得到所述执行函数与函数地址的对应关系,所述函数地址用于指示所述统计桩的插入点;所述插入单元,具体用于根据所述插入点将所述统计桩插入多个所述执行函数,以得到所述检测函数。优选的,在本申请一些可能的实现方式中,所述定位单元,具体用于若所述卡顿时长满足预设条件,则确定当前卡顿时长对应的执行函数为中心函数;所述定位单元,具体用于获取在预设范围内的多个波动执行函数对应的帧信息,以定位为所述卡顿发生点,所述预设范围基于所述中心函数确定。优选的,在本申请一些可能的实现方式中,所述定位单元,具体用于获取在所述预设范围内的多个波动执行函数;所述定位单元,具体用于判断所述多个波动执行函数对应的卡顿时长是否均大于波动阈值,所述波动阈值对应的数值小于所述时延阈值对应的数值;所述定位单元,具体用于若是,则将所述多个波动执行函数和所述中心函数定位为所述卡顿发生点。优选的,在本申请一些可能的实现方式中,所述定位单元,还用于确定所述卡顿发生点对应的卡顿帧;所述定位单元,还用于关联所述卡顿与所述卡顿帧,并上报至服务器,所述服务器用于对所述卡顿发生点进行统计和展示,以得到卡顿原因。优选的,在本申请一些可能的实现方式中,所述定位单元,还用于关联所述卡顿与所述卡顿帧,并记录对应的卡顿时长,以获取累计卡顿时长;所述定位单元,还用于若所述累计卡顿时长满足上报条件,则上报所述卡顿与所述卡顿帧至服务器。本申请第三方面提供一种计算机设备,包括:存储器、处理器以及总线系统;所述存储器用于存储程序代码;所述处理器用于根据所述程序代码中的指令执行上述第一方面或第一方面任一项所述的卡顿定位的的方法。本申请第四方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一项所述的卡顿定位的的方法。从以上技术方案可以看出,本申请实施例具有以下优点:通过实时获取程序运行时每个帧的执行函数,并将统计桩插入执行函数中的多个执行函数中,以得到检测函数;然后记录所述检测函数的函数信息和帧信息,所述函数信息包括函数执行耗时和调用关系数据;当所述函数执行耗时满足预设条件时,则定位所述检测函数中对应的执行函数为卡顿发生点。从而实现了对于程序运行过程中卡顿点的确定过程,该过程不需要获取大量的数据本文档来自技高网...

【技术保护点】
1.一种程序卡顿定位的方法,其特征在于,包括:/n实时获取程序运行时每个帧的执行函数,所述执行函数用于指示所述程序的运行过程;/n将统计桩插入所述执行函数,以得到检测函数;/n记录所述检测函数的函数信息和帧信息,所述函数信息包括函数执行耗时和调用关系数据;/n若所述函数执行耗时满足预设条件,则定位所述检测函数中对应的帧信息为卡顿发生点,所述预设条件基于时延阈值设定。/n

【技术特征摘要】
1.一种程序卡顿定位的方法,其特征在于,包括:
实时获取程序运行时每个帧的执行函数,所述执行函数用于指示所述程序的运行过程;
将统计桩插入所述执行函数,以得到检测函数;
记录所述检测函数的函数信息和帧信息,所述函数信息包括函数执行耗时和调用关系数据;
若所述函数执行耗时满足预设条件,则定位所述检测函数中对应的帧信息为卡顿发生点,所述预设条件基于时延阈值设定。


2.根据权利要求1所述的方法,其特征在于,所述实时获取程序运行时每个帧的执行函数之前,所述方法还包括:
获取所述程序的编译版本;
根据所述编译版本反编译所述执行函数,以得到所述执行函数与函数地址的对应关系,所述函数地址用于指示所述统计桩的插入点;
所述将统计桩插入多个所述执行函数,以得到检测函数,包括:
根据所述插入点将所述统计桩插入多个所述执行函数,以得到所述检测函数。


3.根据权利要求1所述的方法,其特征在于,所述若所述函数执行耗时满足预设条件,则定位所述检测函数中对应的帧信息为卡顿发生点,包括:
若所述函数执行耗时满足预设条件,则确定当前函数执行耗时对应的执行函数为中心函数;
获取在预设范围内的多个波动执行函数对应的帧信息对应的帧信息,以定位为所述卡顿发生点,所述预设范围基于所述中心函数确定。


4.根据权利要求3所述的方法,其特征在于,所述获取在预设范围内的多个波动执行函数对应的帧信息,以定位为所述卡顿发生点,包括:
获取在所述预设范围内的多个波动执行函数;
判断所述多个波动执行函数对应的函数执行耗时是否均大于波动阈值,所述波动阈值对应的数值小于所述时延阈值对应的数值;
若是,则将所述多个波动执行函数和所述中心函数定位为所述卡顿发生点。...

【专利技术属性】
技术研发人员:彭斌魏学峰严明周洪斌徐宇挺程景刘俊辉
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1