利索能及
我要发布
收藏
专利号: 2017102066026
申请人: 武汉斗鱼网络科技有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2024-11-11
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种统计应用程序中的函数调用的方法,所述方法应用在统计应用程序中的函数调用的组件中,其特征在于,所述方法包括:在所述应用程序运行时,利用所述组件中的钩子函数库监控统计调用信息文件MAP文件中的所有函数的函数头在预设时间内各自的调用次数,和所述所有函数的函数头各自的调用时刻;其中,所述组件注入所述应用程序的进程中;

利用所述钩子函数库监控统计所述MAP文件中的所有函数的函数尾各自的调用时刻;

基于所述MAP文件中的所述所有函数的函数头各自的调用时刻以及所述所有函数的函数尾各自的调用时刻,确定出所述所有函数在所述预设时间内的调用时间。

2.如权利要求1所述的方法,其特征在于,所述MAP文件中至少记录了所述所有函数的函数名称、函数地址,函数长度。

3.如权利要求2所述的方法,其特征在于,所述利用所述组件中的钩子函数库钩子函数库监控统计调用信息文件MAP文件中的所有函数的函数头在预设时间内各自的调用次数,和所述所有函数的函数头各自的调用时刻之前,还包括:利用所述钩子函数库的钩子函数监控所述所有函数的函数头。

4.如权利要求3所述的方法,其特征在于,所述利用所述钩子函数库的钩子函数监控所述所有函数的函数头,包括:获取所述组件在终端设备的内存中的起始地址;

读取所述MAP文件中的所有函数的函数名称、函数地址;其中,所述所有函数的函数地址为各自相对于所述组件的函数地址;

将所述所有函数的函数地址各自相对于所述组件的函数地址分别和所述组件在内存中的起始地址求和,获得所述所有函数各自的内存地址;所述所有函数各自的内存地址就是所述所有函数各自的函数头;

利用所述钩子函数库对所述所有函数各自的内存地址进行监控。

5.如权利要求4所述的方法,其特征在于,所述将所述所有函数的函数地址各自相对于所述组件的函数地址分别和所述组件在内存中的起始地址求和,获得所述所有函数各自的内存地址;所述所有函数各自的内存地址就是所述所有函数各自的函数头,包括:利用所述钩子函数库监控所述所有函数从各自的内存地址调用的调用次数和调用时刻。

6.如权利要求2和3所述的方法,其特征在于,所述利用所述钩子函数库监控统计所述MAP文件中的所有函数的函数尾各自的调用时刻,包括:读取所述所有函数的函数名称、函数地址、函数长度;

将所述所有函数各自的函数地址和函数长度求和,获得所述所有函数各自的尾地址;

利用所述钩子函数库对所述所有函数各自的尾地址进行监控,获得所述所有函数各自的尾地址的调用时刻。

7.一种统计应用程序中的函数调用的组件,其特征在于,所述组件注入在所述应用程序的进程中,用以对所述应用程序中的所有函数的调用时间和调用次数进行监控,包括:第一监控模块,用于在所述应用程序运行时,利用所述组件中的钩子函数库监控统计调用信息文件MAP文件中的所有函数的函数头在预设时间内各自的调用次数,和所述所有函数的函数头各自的调用时刻;其中,所述组件注入所述应用程序的进程中;

第二监控模块,用于利用所述钩子函数库监控统计所述MAP文件中的所有函数的函数尾各自的调用时刻;

确定模块,用于基于所述MAP文件中的所述所有函数的函数头各自的调用时刻以及所述所有函数的函数尾各自的调用时刻,确定出所述所有函数在所述预设时间内的调用时间。

8.如权利要求7所述的组件,其特征在于,所述MAP文件中至少记录了所述所有函数的函数名称、函数地址,函数长度。

9.如权利要求8所述的组件,其特征在于,所述组件还包括:

第三监控模块,用于利用所述钩子函数库的钩子函数监控所述所有函数的函数头。

10.如权利要求9所述的组件,其特征在于,所述第三监控模块,包括:获取模块,用于获取所述组件在终端设备的内存中的起始地址;

读取模块,用于读取所述MAP文件中的所有函数的函数名称、函数地址;其中,所述所有函数的函数地址为各自相对于所述组件的函数地址;

获得模块,用于将所述所有函数的函数地址各自相对于所述组件的函数地址分别和所述组件在内存中的起始地址求和,获得所述所有函数各自的内存地址;所述所有函数各自的内存地址就是所述所有函数各自的函数头;

监控子模块,用于利用所述钩子函数库对所述所有函数各自的内存地址进行监控。