内存分配代码检测方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:22308130 阅读:26 留言:0更新日期:2019-10-16 08:14
本申请公开了一种内存分配代码检测方法、装置、计算机设备及存储介质,在该方案中,计算机设备在获取到待检测应用程序代码的中间语言代码后,在待检测中间语言代码中确定指令码为目标指令码的目标中间语言代码,最后通过确定目标中间语言代码对应的源码在待检测应用程序代码中的位置信息,即可确定内存分配代码在待检测应用程序代码中的位置信息。可见,该方案通过目标中间语言代码即可确定待检测应用程序中内存分配代码的位置信息。而且本申请提供的内存分配代码检测方法无需运行应用程序,也无需穷尽应用程序的每种操作情况,因此操作简便,也可以避免内存分配代码检测不全面的问题。

Memory allocation code detection method, device, computer equipment and storage medium

【技术实现步骤摘要】
内存分配代码检测方法、装置、计算机设备及存储介质
本申请涉及数据处理
,尤其涉及一种内存分配代码检测方法、装置、计算机设备及存储介质。
技术介绍
应用程序在运行时通常会使用内存来存储数据,当被存储的数据不再被使用时,GC(GarbageCollection,垃圾回收)机制会将这些数据所占用的内存空间释放,以使这部分内存空间可以继续被使用。在应用程序运行的过程中,如果内存分配操作过多或者过于频繁,就会触发垃圾回收,而垃圾回收会造成运行卡顿等不佳的表现,因此,如何在应用程序代码中检测出内存分配代码,是本领域技术人员需要解决的技术问题。
技术实现思路
有鉴于此,本申请提供了一种内存分配代码检测方法、装置、计算机设备及存储介质,以在在应用程序代码中检测出内存分配代码。为实现上述目的,一方面,本申请提供了一种内存分配代码检测方法,包括:获取待检测中间语言代码,所述待检测中间语言代码为对待检测应用程序代码进行编译得到的中间语言代码;在所述待检测中间语言代码中确定指令码为目标指令码的目标中间语言代码;所述目标指令码为对应内存分配代码的指令码;利用所述目标中间语言代码确定内存分配代码位置信息,所述内存分配代码位置信息为内存分配代码在所述待检测应用程序代码中的位置信息。可选地,所述利用所述目标中间语言代码确定内存分配代码在所述待检测应用程序代码中的内存分配代码位置信息之后,还包括:利用所述内存分配代码位置信息确定最后修改账号,所述最后修改账号为最后修改每行内存分配代码的账号;向每个所述最后修改账号对应的代码编辑系统发送相应的内存分配代码位置信息和内存分配代码修改指令,以使所述代码编辑系统对所述内存分配代码进行修改。可选地,所述向每个所述最后修改账号对应的代码编辑系统发送内存分配代码修改指令与对应的内存分配代码位置信息,包括:利用预设任务分发系统的API向每个所述最后修改账号对应的代码编辑系统发送内存分配代码修改指令与对应的内存分配代码位置信息。可选地,所述利用所述目标中间语言代码确定内存分配代码位置信息,包括:利用所述目标中间语言代码确定内存分配代码在所述待检测应用程序代码中的行号与所属的函数名。又一方面,本申请提供了一种内存分配代码检测系统,包括:待检测中间语言代码获取模块,用于获取待检测中间语言代码;所述待检测中间语言代码为对待检测应用程序代码进行编译得到的中间语言代码;目标中间语言代码确定模块,用于在所述待检测中间语言代码中确定指令码为目标指令码的目标中间语言代码;所述目标指令码为对应内存分配代码的指令码;位置信息确定模块,用于利用所述目标中间语言代码确定内存分配代码位置信息,所述内存分配代码位置信息为内存分配代码在所述待检测应用程序代码中的位置信息。又一方面,本申请还提供了一种计算机设备,包括:处理器和存储器;其中,所述处理器用于执行所述存储器中存储的程序;所述存储器用于存储程序,所述程序至少用于:获取待检测中间语言代码;其中,所述待检测中间语言代码为对待检测应用程序代码进行编译得到的中间语言代码;在所述待检测中间语言代码中确定指令码为目标指令码的目标中间语言代码;其中,所述目标指令码为对应内存分配代码的指令码;利用所述目标中间语言代码确定内存分配代码位置信息,所述内存分配代码位置信息为内存分配代码在所述待检测应用程序代码中的位置信息。又一方面,本申请还提供了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现本申请任一实施例的内存分配代码检测方法。可见,在本申请中,首先获取待检测应用程序代码编译后得到的待检测中间语言代码,由于中间语言代码中包括能够反映机器实际操作内容的指令码,因此,通过匹配指令码的方式,即可确定内存分配操作对应的目标中间语言代码,又由于中间语言代码是由应用程序代码编译得到,二者之间存在对应关系,从而通过目标中间语言代码即可确定待检测应用程序中内存分配代码的位置信息。而且本申请实施例提供的内存分配代码检测方法无需运行应用程序,也无需穷尽应用程序的每种操作情况,因此操作简便,也可以避免内存分配代码检测不全面的问题。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1示出了本申请实施例的一种内存分配代码检测方法所适用的硬件组成框架示意图;图2示出了本申请实施例的一种内存分配代码检测方法的一种流程示意图;图3示出了本申请实施例的一种内存分配代码检测方法的一种流程示意图;图4示出了本申请实施例的一种内存分配代码位置信息的确定流程示意图;图5示出了本申请实施例的一种内存分配代码检测方法的一种流程示意图;图6示出了本申请实施例的一种内存分配代码检测方法的一种流程示意图;图7示出了本申请实施例的一种应用场景实施例对应的系统示意图;图8示出了本申请实施例的一种内存分配代码检测系统的一个实施例的组成结构示框图;图9示出了本申请实施例的一种计算机设备的一个实施例的组成结构示意图。具体实施方式在应用程序运行的过程中,如果内存分配操作过多或者过于频繁,就会触发垃圾回收,而垃圾回收会造成运行卡顿等不佳的表现,因此,如何在应用程序代码中检测出内存分配代码,是本领域技术人员需要解决的技术问题。目前,由于包括内存分配代码的源码都是由高级语言编写的,而使用高级语言实现一种功能,如实现内存分配操作,其对应的代码编写规则十分多样化,而且同一种代码编写规则可能也适用多种不同的功能,此外一种功能的实现甚至会通过调用各种封装包的形式,使源码部分并没有实际的功能代码,即,实际实现功能的代码并没有直接显现出来,所以目前无法直接从源码中检测到内存分配代码。现有的内存分配代码检测方法通常是采用动态的检测方式,将应用程序运行起来,通过尝试各种运行状态,穷尽所有能够对应用程序进行的操作,找到出现内存分配操作的情况,并根据出现内存分配操作的情况找到对应的源码,但这种方式依赖于应用程序的运行状态,以及已尝试的操作情况,测试工作量十分大,而且如果尝试的不够全面,则不能检测出所有的内存分配代码。而本方案提供一种内存分配代码检测方法,即可方便检测所有的内存分配代码。为了便于理解,先对本申请的内存分配方法对应的方案所适用的硬件组成框架进行介绍。可以参见图1,其中,图1示出了本申请一种内存分配代码检测方法所适用的硬件组成框架示意图。请参考图1,由图1可知,该硬件组成框架可以包括:第一计算机设备101与第二计算机设备102,其中第一计算机设备101为用来实现内存分配代码检测功能的设备,可以有一个或一个以上,第二计算机设备102为编写待检测应用程序代码的设备,同样可以有一个或一个以上。第一计算机设备101与第二计算机设备102之间通过网络103实现通信连接。可以理解的是,本申请实施例中并不对计算机设备的数量进行限定,其可以是多个计算机设备共同协作完成内存分配代码检测功能,例如,一个应用程序的代码被分为多个项目或模块,一个计算机设备负责一个项目或模块的内存分配代码的检测功能。在一种可能的情况中,请参考图1,由图1可知本文档来自技高网...

【技术保护点】
1.一种内存分配代码检测方法,其特征在于,包括:获取待检测中间语言代码,所述待检测中间语言代码为对待检测应用程序代码进行编译得到的中间语言代码;在所述待检测中间语言代码中确定指令码为目标指令码的目标中间语言代码;所述目标指令码为对应内存分配代码的指令码;利用所述目标中间语言代码确定内存分配代码位置信息,所述内存分配代码位置信息为内存分配代码在所述待检测应用程序代码中的位置信息。

【技术特征摘要】
1.一种内存分配代码检测方法,其特征在于,包括:获取待检测中间语言代码,所述待检测中间语言代码为对待检测应用程序代码进行编译得到的中间语言代码;在所述待检测中间语言代码中确定指令码为目标指令码的目标中间语言代码;所述目标指令码为对应内存分配代码的指令码;利用所述目标中间语言代码确定内存分配代码位置信息,所述内存分配代码位置信息为内存分配代码在所述待检测应用程序代码中的位置信息。2.根据权利要求1所述的方法,其特征在于,所述利用所述目标中间语言代码确定内存分配代码位置信息,包括:在所述目标中间语言代码中确定包括内存分配指令的目标中间语言代码;利用所述包括内存分配指令的目标中间语言代码确定内存分配代码位置信息。3.根据权利要求1所述的方法,其特征在于,所述利用所述目标中间语言代码确定内存分配代码位置信息之后,还包括:利用所述内存分配代码位置信息确定最后修改账号,所述最后修改账号为最后修改每行内存分配代码的账号;向每个所述最后修改账号对应的代码编辑系统发送相应的内存分配代码位置信息和内存分配代码修改指令,以使所述代码编辑系统对所述内存分配代码进行修改。4.根据权利要求3所述的方法,其特征在于,所述利用所述内存分配代码位置信息确定最后修改账号之前,还包括:判断所述目标中间语言代码的条数是否大于预设阈值;若是,则执行所述利用所述内存分配代码位置信息确定最后修改账号的步骤。5.根据权利要求4所述的方法,其特征在于,所述向每个所述最后修改账号对应的代码编辑系统发送内存分配代码修改指令与对应的内存分配代码位置信息之后,还包括:接收所述代码编辑系统发送的修改完成指令;执行所述获取待检测中间语言代码的步骤。6.根据权利要求3所述的方法,其特征在于,所述利用所述内存分配代码位置信息确定...

【专利技术属性】
技术研发人员:程耀
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

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

1