回捞函数调用轨迹的方法、装置、电子设备、及服务器制造方法及图纸

技术编号:20796870 阅读:14 留言:0更新日期:2019-04-06 10:29
本公开的实施例提供一种回捞函数调用轨迹的方法、装置、电子设备、及服务器。所述方法在客户端处实现,且所述方法包括如下步骤:生成函数调用轨迹;以文件分片存储的方式来存储所生成的函数调用轨迹;将存储的函数调用轨迹的分片文件传输到服务器。能够以无埋点、业务不感知的方式对较大量级的函数调用轨迹进行高效回捞,以便回捞的函数调用轨迹能够为问题定位提供充分、高效且针对性的参考,进而迅速高效地排查和定位问题。

Method, device, electronic equipment, and server of call trajectory of salvage function

Embodiments of the present disclosure provide a method, device, electronic device, and server for a salvage function call trajectory. The method is implemented at the client side, and the method includes the following steps: generating function call trajectory; storing the generated function call trajectory in the way of file fragmentation storage; and transferring the fragmented file of the stored function call trajectory to the server. It can effectively salvage a large number of functional call trajectories in a non-buried and business-insensitive way, so that the salvaged function call trajectories can provide sufficient, efficient and targeted reference for problem location, and then quickly and efficiently investigate and locate problems.

【技术实现步骤摘要】
回捞函数调用轨迹的方法、装置、电子设备、及服务器
本公开涉及一种用于回捞函数调用轨迹的方法,具体而言,本公开涉及一种回捞函数调用轨迹的方法、装置、介质、电子设备、服务器及系统。
技术介绍
对于客户端安装的应用,需要追踪问题以对应用进行修复和更新,但目前对于客户端(例如安卓系统的客户端)的问题,存在难再现、难追踪、难定位的问题。为了有效定位线上的问题,客户端函数调用轨迹的有效回捞是需要解决的关键问题。目前,可以基于例如Robust的热修复方案来生成与发生问题相关联的函数轨迹,以Robust热修复方案为例,其可以在各个方法函数的调用前,记录下该方法函数的相关信息。目前通常使用本地数据库来存储生成的函数轨迹,例如有些技术团队使用Sqlite数据库在本地存储函数轨迹,Sqlite数据库的存储容量大概是30万条函数轨迹的数量级,这大约是美团应用六次打开产生的日志数量,所生成的函数轨迹超出该存储容量时,会覆盖之前存储的函数轨迹。专利技术人发现上述技术至少存在以下问题:该数量级的存储容量对于单次使用时间长得多(例如可达数个小时)、使用频次更高从而产生日志量级较高的应用是不够的,导致对于问题定位有意义的函数调用轨迹很可能被覆盖掉,或者保留的函数调用轨迹不能为问题定位提供充分参考,进而影响了线上问题定位的准确度和效率。
技术实现思路
本公开旨在提供技术方案以解决上述技术问题。本公开实施例提供一种回捞函数调用轨迹的方法、装置、电子设备及服务器,以便回捞的函数调用轨迹能够为问题定位提供充分、高效且针对性的参考。根据第一方面,本公开的实施例提供一种用于回捞函数调用轨迹的方法,其在客户端处实现,所述方法包括如下步骤:生成函数调用轨迹;以文件分片存储的方式来存储所生成的函数调用轨迹;传输所存储的函数调用轨迹的分片文件。根据第二方面,本公开的实施例提供一种用于回捞函数调用轨迹的装置,所述装置包括:生成单元,其配置为生成函数调用轨迹;存储单元,其配置为以文件分片存储的方式来存储所生成的函数调用轨迹;传输单元,其配置为传输所存储的函数调用轨迹的分片文件。根据第三方面,本公开的实施例提供一种非易失性计算机可读的存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现根据本公开的各个实施例的用于回捞函数调用轨迹的方法的步骤。根据第四方面,本公开的实施例提供一种电子设备,至少包括存储器、处理器,所述存储器上存储有计算机程序,所述处理器在执行所述存储器上的计算机程序时实现根据本公开的各个实施例的用于回捞函数调用轨迹的方法的步骤。根据第五方面,本公开的实施例提供一种服务器,所述服务器被配置为:接收来自客户端的函数调用轨迹的分片文件;接收来自业务方的关注分类;向所述业务方发送所接收的关注分类的函数调用轨迹的分片文件。根据本公开的各个实施例的回捞函数调用轨迹的方法、装置、电子设备及服务器,能够以无埋点、业务不感知的方式对较大量级的函数调用轨迹进行高效回捞。附图说明下面将参照附图描述本专利技术的示例性实施例的特征、优点以及技术和工业重要性,附图中相同的数字表示相同的元件,并且其中:图1示出根据本公开的第一实施例的在客户端处实现的用于回捞函数调用轨迹的方法的流程;图2示出根据本公开的第二实施例的在客户端处实现的用于回捞函数调用轨迹的方法的流程;图3示出根据本公开的第三实施例的函数调用轨迹的分片文件单元的数据结构图示;图4示出根据本公开的第四实施例的在客户端处实现的用于回捞函数调用轨迹的方法的流程;图5示出根据本公开的第五实施例的用于实施函数调用轨迹的回捞方法的装置的示例的配置框图;图6示出根据本公开的第六实施例的用于实施函数调用轨迹的回捞方法的电子设备的示例的单元框图;以及图7示出根据本公开的第七实施例的用于回捞函数调用轨迹的系统的图示。具体实施方式为了使得本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例的附图,对本专利技术实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本专利技术的一部分实施例,而不是全部的实施例。基于所描述的本专利技术的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。除非另外定义,本专利技术使用的技术术语或者科学术语应当为本专利技术所属领域内具有一般技能的人士所理解的通常意义。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。为了保持本专利技术实施例的以下说明清楚且简明,本专利技术省略了已知功能和已知部件的详细说明。图1示出根据本公开的第一实施例的在客户端处实现的用于回捞函数调用轨迹的方法的流程。如图1所示,该回捞方法100始于步骤101:生成函数调用轨迹,这里,函数调用轨迹可以采用各种方案来实现,诸如,可以基于各种热修复方案来实现,所述热修复方案例如但不限于阿里系的AndFix、腾讯系的dexDiff和dexPatch、美团的即时运行(instantrun)Robust热更新方案等。然后,在步骤102,以文件分片存储的方式来存储所生成的函数调用轨迹。如此相较以本地数据库来存储所生成的函数调用轨迹的现有技术,消除了数据库本身的构件所消耗的存储空间,能够以大得多的量级来存储函数调用轨迹。以美团的Sqlite数据库存储方法作为比较例,其只能存储相当于美团应用大约六次打开产生的日志量(即大约30W条函数轨迹),而本公开中的文件分片存储的方式能够存储长达几十分钟至小时量级(例如最近大约50分钟、大约2小时等)的日志量,从而尤其适用于单次使用时间长、使用频次高、操作复杂且调用函数轨迹量大的应用,能够对问题相关的函数调用轨迹实现充分且全面的存储。在本公开的实施例中,文件可以按照时间分片,如此,文件的各个分片可以精确地表示用户的某个时段级别(例如分钟级别)的函数使用情况,从而在与问题相关的函数调用轨迹的日志量非常大的情况下,便利根据时间来有效缩小目标日志的范围,从而检索到与问题更紧密相关的目标日志,从而提高问题定位的效率。例如,可以检索问题发生时间回溯预定时间段内(例如30分钟内)的函数调用轨迹,并据此定位问题。然后,在步骤103,对所存储的函数调用轨迹的分片文件进行传输,例如传输到服务器。在本公开的一些实施例中,所述服务器可以配置为存储所接收的函数调用轨迹的分片文件,并应对应用进行开发和维护的业务方的请求,将其所需的函数调用轨迹的分片文件传输给所述业务方以进行线下的应用的改进。如图2所示,根据本公开的第二实施例的在客户端处实现的用于回捞函数调用轨迹的方法的流程200中的步骤201、204和205与图1所示的流程100中的步骤101、102和103相同,在此不赘述,其与流程100的区别在于,在步骤201处生成函数调用轨迹之后,判定应用是否切换到后台(步骤202),如果否,才继续后续流程,如果是,则返回到步骤201继续函数调用轨迹的生成。鉴于应用处于后台时所产生的函数轨迹对于问题的排查和定位是一种干扰,而且应用在后台存活时间较长导致产生的没有参考意义的函数轨迹较多,通过引入步骤202,可以避免应用处于后台时产生的函数轨迹占用具有参考意义的函数轨迹的存储空间,进而避免干扰问题的排查和定位。在本公开的一些实施例中本文档来自技高网...

【技术保护点】
1.一种用于回捞函数调用轨迹的方法,其在客户端处实现,且其特征在于,所述方法包括:生成函数调用轨迹;以文件分片存储的方式来存储所生成的函数调用轨迹;传输所存储的函数调用轨迹的分片文件。

【技术特征摘要】
1.一种用于回捞函数调用轨迹的方法,其在客户端处实现,且其特征在于,所述方法包括:生成函数调用轨迹;以文件分片存储的方式来存储所生成的函数调用轨迹;传输所存储的函数调用轨迹的分片文件。2.根据权利要求1所述的方法,其特征在于,所述分片文件按照时间分片。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:监听在所述客户端处的应用的切换,当所述应用切换到后台时,不存储所生成的函数调用轨迹。4.根据权利要求3所述的方法,其特征在于,存储所生成的函数调用轨迹的步骤还包括:从生成的函数调用轨迹中去除预定义的函数的调用轨迹,仅存储剩余的所生成的函数调用轨迹。5.根据权利要求4所述的方法,其特征在于,所述预定义的函数的调用轨迹包括频繁调用且无需观察的函数调用轨迹和/或由业务方预先自定义的函数的调用轨迹。6.根据权利要求2-5中任一项所述的方法,其特征在于,传输所存储的函数调用轨迹的分片文件的步骤包括:响应于所述服务器的询问,将存储的函数调用轨迹的预定时间段内的分片文件传输到所述服务器。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:对所存储的函数调用轨迹进行分类,传输所存储的函数调用轨迹的分片文件的步骤包括:将分类后的存储的函...

【专利技术属性】
技术研发人员:张君
申请(专利权)人:北京字节跳动网络技术有限公司
类型:发明
国别省市:北京,11

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

1