一种热点函数确定的方法及相关设备技术

技术编号:14819995 阅读:55 留言:0更新日期:2017-03-15 12:55
本发明专利技术实施例公开了一种热点函数确定的方法及相关设备。用于本发明专利技术实施例方法包括:终端获取目标程序中的程序数据库文件PDB文件;终端对目标程序中的PDB文件进行解析,得到目标程序中全部函数及全部函数对应的函数信息集合,函数信息集合包括各函数的标识;终端将各函数的标识存储至预置的存储区;当终端执行目标程序时,每当执行到任一第一函数时,跳转到与任一第一函数的标识所对应的存储区,对任一第一函数的被执行的次数加1;终端根据存储区中的各函数的执行次数的记录信息,确定目标程序中的热点函数。

【技术实现步骤摘要】

本专利技术涉及计算机领域,尤其涉及一种热点函数确定的方法及相关设备
技术介绍
程序是由一个个函数构成的,当终端(例如,计算机,手机等)在运行程序的过程中,程序中的函数执行次数是不同的,而且有可能不同的函数执行的次数千差万别,以游戏程序为例,在游戏中那些执行次数非常多的函数的执行效率严重影响整个游戏的执行性能。传统的方法中,测试人员通过手动方式对关注的函数进行执行情况分析,需要确定函数原型并且需要针对目标函数编写对应的代码,如果关注的函数发生变化或关注的函数增加了,都需要重新编码来获取信息。需要花费很大的人力成本。并且仅仅可以获取关注的函数的执行次数,无法确定该函数是否是热点函数。
技术实现思路
本专利技术实施例提供了一种热点函数确定的方法及相关设备。第一方面,本专利技术实施例提供了一种热点函数确定的方法,包括:终端获取目标程序中的程序数据库文件PDB文件;所述终端对所述目标程序中的PDB文件进行解析,得到所述目标程序中全部函数及所述全部函数对应的函数信息集合,所述函数信息集合包括各函数的标识;所述终端将所述各函数的标识存储至预置的存储区;当所述终端执行所述目标程序时,每当执行到任一第一函数时,跳转到与所述任一第一函数的标识所对应的存储区,对所述任一第一函数的被执行的次数加1;所述终端根据所述存储区中的各函数的执行次数的记录信息,确定所述目标程序中的热点函数。第二方面,本专利技术实施例提供了一种热点函数确定的方法,包括:服务器接收终端发送的目标程序中的程序数据库文件PDB文件;所述服务器对所述PDB文件进行解析,得到所述目标程序中的全部函数;所述服务器确定所述全部函数中的各第一函数,所述各第一函数为与执行次数具有跳转关系的函数;所述服务器通过hook将函数记录操作注入到所述第一函数里生成测试工具包;所述服务器将所述测试工具包发送给所述终端,以使所述终端根据所述测试工具包对所述目标程序中的全部函数的执行次数进行测试,以确定所述目标程序中的热点函数。第三方面,本专利技术实施例提供了一种终端,包括:获取模块,用于获取目标程序中的程序数据库文件PDB文件;解析模块,用于对所述获取模块获取的所述目标程序中的PDB文件进行解析,得到所述目标程序中全部函数及所述全部函数对应的函数信息集合,所述函数信息集合包括各函数的标识,所述PDB文件还用于确定所述全部函数中的各第一函数,所述各第一函数为被hook后与执行次数具有跳转关系的函数;存储模块,用于将所述各函数的标识存储至预置的存储区;执行模块,用于当执行所述目标程序时,每当执行到任一第一函数时,跳转到与所述确定模块确定的所述任一第一函数的所述存储模块存储的标识所对应的存储区,对所述任一第一函数的被执行的次数加1;第一确定模块,用于根据所述存储区中的所述执行模块执行的各函数的执行次数的记录信息,确定所述目标程序中的热点函数。第四方面,本专利技术提供了一种服务器,包括:接收模块,用于接收终端发送的目标程序中的程序数据库文件PDB文件;解析模块,用于对所述接收模块接收的所述PDB文件进行解析,得到所述目标程序中的全部函数;确定模块,用于确定所述解析模块解析的所述全部函数中的各第一函数,所述各第一函数为与执行次数具有跳转关系的函数;工具包生成模块,用于通过hook将函数记录操作注入到所述确定模块确定的所述第一函数里生成测试工具包;发送模块,用于将所述工具包生成模块生成的所述测试工具包发送给所述终端,以使所述终端根据所述测试工具包对所述目标程序中的全部函数的执行次数进行测试,以确定所述目标程序中的热点函数。从以上技术方案可以看出,本专利技术实施例具有以下优点:本专利技术实施例中,在解析出目标程序中的全部函数后,使用hook技术将函数记录操作注入到全部函数里,在目标程序运行的过程中,同步记录目标程序中各函数的被执行次数,不影响目标程序的运行。当目标程序结束后,生成各函数的被执行次数的记录信息,根据该记录信息中记录的各函数的被执行的次数,确定出目标程序中的热点函数。从而使得后续可以根据这些热点函数对目标程序进行有目的的优化,可以提升目标程序的性能。附图说明图1为本专利技术实施例中的通信系统的架构示意图;图2为本专利技术实施例中的一种热点函数确定的方法的一个实施例示意图;图3为本专利技术实施例中的函数信息的示意图;图4为本专利技术实施例中的工具图形界面的示意图;图5为本专利技术实施例中的测试工具包包括的文件的示意图;图6为本专利技术实施例中的代码片段的示意图;图7为本专利技术实施例中的统计函数被执行次数的原理示意图;图8为本专利技术实施例中的终端展示热点函数的展示界面示意图;图9为本专利技术实施例中的一种热点函数确定的方法的另一个实施例示意图;图10为本专利技术实施例中的一种终端的一个实施例的结构示意图;图11为本专利技术实施例中的一种终端的另一个实施例的结构示意图;图12为本专利技术实施例中的一种终端的另一个实施例的结构示意图;图13为本专利技术实施例中的一种终端的另一个实施例的结构示意图;图14为本专利技术实施例中的一种服务器的一个实施例的结构示意图;图15为本专利技术实施例中的一种服务器的另一个实施例的结构示意图;图16为本专利技术实施例中的一种服务器的另一个实施例的结构示意图;图17为本专利技术实施例中的一种服务器的另一个实施例的结构示意图。具体实施方式本专利技术实施例提供了一种热点函数确定的方法,用于确定目标程序中的热点函数。从而使得后续可以根据这些热点函数对目标程序进行有目的的优化,可以提升目标程序的性能。为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。为了方便理解,首先对本专利技术实施例中设计的词语进行解释说明:PDB文件:是使用微软提供的集成开发环境软件(MicrosoftVisualstudio,VS)生成的用于调试的符号文件(programdatabase),保存着调试信息。热点函数:一个程序在运行过程中,会执行很多的函数,而执行次数最多的那些函数被称为热点函数。在一个程序中可以将各函数的被执行次数按照从大到小的顺序进行排序,位于第N个位次之前的函数为热点函数,N为大于等于2的正整数。例如N为10,则按照被执行次数进行排序,前9个函数为该程序中的热点函数。因为热点函数被执行的次数多,所以这些函数的执行效率对程序的整体执行性能影响很大。函数hook技术:一种对目标函数进行hook,用于改变函数执行结果本文档来自技高网
...
一种热点函数确定的方法及相关设备

【技术保护点】
一种热点函数确定的方法,其特征在于,包括:终端获取目标程序中的程序数据库文件PDB文件;所述终端对所述目标程序中的PDB文件进行解析,得到所述目标程序中全部函数及所述全部函数对应的函数信息集合,所述函数信息集合包括各函数的标识;所述终端将所述各函数的标识存储至预置的存储区;当所述终端执行所述目标程序时,每当执行到任一第一函数时,跳转到与所述任一第一函数的标识所对应的存储区,对所述任一第一函数的被执行的次数加1;所述终端根据所述存储区中的各函数的执行次数的记录信息,确定所述目标程序中的热点函数。

【技术特征摘要】
1.一种热点函数确定的方法,其特征在于,包括:终端获取目标程序中的程序数据库文件PDB文件;所述终端对所述目标程序中的PDB文件进行解析,得到所述目标程序中全部函数及所述全部函数对应的函数信息集合,所述函数信息集合包括各函数的标识;所述终端将所述各函数的标识存储至预置的存储区;当所述终端执行所述目标程序时,每当执行到任一第一函数时,跳转到与所述任一第一函数的标识所对应的存储区,对所述任一第一函数的被执行的次数加1;所述终端根据所述存储区中的各函数的执行次数的记录信息,确定所述目标程序中的热点函数。2.根据权利要求1所述的方法,其特征在于,所述PDB文件还用于确定所述全部函数中的各第一函数,所述各第一函数为被hook后与执行次数具有跳转关系的函数;所述当所述终端执行所述目标程序之前,所述方法还包括:所述终端确定所述全部函数中的各第一函数。3.根据权利要求2所述的方法,其特征在于,所述终端确定所述全部函数中的各第一函数,包括:终端确定所述全部函数中的各第二函数,所述各第二函数为不能被hook的函数;终端根据所述各第二函数确定所述各第一函数,所述各第一函数为所述全部函数中除所述各第二函数之外的函数,所述各第一函数为能被hook的函数。4.根据权利要求3所述的方法,其特征在于,所述终端确定所述全部函数中的各第二函数,包括:所述终端获取所述目标程序的动态链接库DLL文件;所述终端通过IDA工具对所述DLL文件进行反汇编生成目标格式文件;所述终端对所述目标格式文件进行分析处理,分析出第二函数。5.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:当所述终端执行所述目标程序时,每当执行到任一第二函数时,则继续执行下一个待执行的函数。6.根据权利要求3或4所述的方法,其特征在于,所述终端获取目标程序中的程序数据库文件PDB文件之后,在所述终端执行所述目标程序之前,所述方法还包括:所述终端将所述PDB文件发送至服务器,所述PDB文件用于所述服务器生成测试工具包,所述测试工具包为通过hook将函数记录操作注入到所述全部函数里而生成的执行文件;所述终端接收所述测试工具包,所述测试工具包用于对所述目标程序中的全部函数的执行次数进行测试。7.根据权利要求1至6任一项所述的方法,其特征在于,所述终端根据所述存储区中的各函数的执行次数的记录信息,确定所述目标程序中的热点函数,包括:所述终端获取对所述目标程序多次测试得出的多个记录信息;所述终端对所述多个记录信息中的各函数对应的的执行次数进行累加或者平均计算,得到各函数的累加或者平均计算后的执行次数;所述终端根据所述各函数的累加或者平均计算后的执行次数确定所述目标程序中的热点函数。8.一种热点函数确定的方法,其特征在于,包括:服务器接收终端发送的目标程序中的程序数据库文件PDB文件;所述服务器对所述PDB文件进行解析,得到所述目标程序中的全部函数;所述服务器确定所述全部函数中的各第一函数,所述各第一函数为与执行次数具有跳转关系的函数;所述服务器通过hook将函数记录操作注入到所述第一函数里生成测试工具包;所述服务器将所述测试工具包发送给所述终端,以使所述终端根据所述测试工具包对所述目标程序中的全部函数的执行次数进行测试,以确定所述目标程序中的热点函数。9.根据权利要求8所述的方法,其特征在于,所述服务器确定所述全部函数中的各第一函数,包括:所述服务器确定所述全部函数中的各第二函数,所述各第二函数为不能被hook的函数;所述服务器根据所述各第二函数确定所述各第一函数,所述第一函数为所述全部函数中除所述第二函数之外的函数,所述第一函数为能被hook的函数。10.根据权利要求9所述的方法,其特征在于,所述服务器确定所述全部函数中的各第二函数,包括:所述服务器获取所述目标程序的动态链接库DLL文件;所述服务器通过IDA工具对所述DLL文件进行反汇编生成目标格式文件;所述服务器对所述目标格式文件进行分析处理,分析出第二函数。11.根据权利要求8至10任一项所述的方法,所述方法还包括:所述服务器接收终端发送的多个记录信息;所述服务器对所述多个记录信息中的各函数的执行次数进行累加,得到各函数的累加后的执行次数;所述服务器根据所述各函数的累加后的执行次数确定所述目标程序中的热点函数。12.一种终端,其特征在于,包括:获取模块,用于获取目标程序中的程序数据库文...

【专利技术属性】
技术研发人员:党万春张晓杰毕研涛魏学峰
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

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

1