[发明专利]iOS系统中应用程序的运行信息确定方法、装置有效
申请号: | 201811512388.8 | 申请日: | 2018-12-11 |
公开(公告)号: | CN109783161B | 公开(公告)日: | 2020-08-04 |
发明(设计)人: | 徐臻;吴君阳;王志宇 | 申请(专利权)人: | 北京三快在线科技有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 莎日娜 |
地址: | 100083 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | ios 系统 应用程序 运行 信息 确定 方法 装置 | ||
1.一种iOS系统中应用程序的运行信息确定方法,所述iOS系统中设置有多个线程,所述线程包含至少一个方法对象,其特征在于,所述的方法包括:
当所述应用程序通过预设入口函数,调用所述线程中任一所述方法对象时,拦截所述预设入口函数;
将所述预设入口函数替换为目标函数;以使所述线程的方法对象的运行进入到所述目标函数中;
当所述目标函数在所述方法对象中运行时,获取所述方法对象的运行状态;
所述目标函数构建堆栈器,在所述堆栈器中写入和读取所述运行状态;
所述目标函数根据所述运行状态在所述堆栈器中的写入和读取的时间,生成所述方法对象的运行时间;
所述目标函数通过所述方法对象的运行时间,确定所述方法对象在所述线程中的调用关系,以及,所述线程的运行时间;
所述目标函数根据所述方法对象在所述线程中的调用关系,以及,所述线程的运行时间,确定所述应用程序的运行信息;
其中,每个线程均维护一个独立的栈存储区域,根据该独立的栈存储区域中每个线程中包含的方法对象的运行开始时间和结束时间,确定该线程的运行时间;
将所述目标函数还原为所述预设入口函数;
所述应用程序通过预设入口函数,调用所述线程中任一所述方法对象时,所述方法对象读取所述堆栈器中在所述目标函数开始调用方法对象时存储的各方法对象的运行状态;
所述方法对象根据所述运行状态恢复运行。
2.根据权利要求1所述的方法,其特征在于,所述方法对象的运行时间包括所述方法对象的第一运行起始时间和第一运行结束时间,以及,所述方法对象的第一运行耗时;所述目标函数根据所述运行状态在所述堆栈器中的写入和读取的时间,生成所述方法对象的运行时间的步骤,包括:
所述方法对象运行开始,所述目标函数将所述方法对象的运行状态在所述堆栈器中执行入栈操作;
所述方法对象运行结束,所述目标函数将所述方法对象的所述运行状态从所述堆栈器中执行出栈操作;
所述目标函数通过所述入栈操作的时间,确定所述方法对象的第一运行起始时间;
所述目标函数通过所述出栈操作的时间,确定所述方法对象的第一运行结束时间;
所述目标函数根据所述第一运行起始时间和所述第一运行结束时间之差,确定所述方法对象的第一运行耗时。
3.根据权利要求2所述的方法,其特征在于,所述线程的运行时间包括所述线程的第二运行起始时间和第二运行结束时间,以及,所述线程的第二运行耗时;所述目标函数通过所述方法对象的运行时间,确定所述方法对象在所述线程中的调用关系,以及,所述线程的运行时间的步骤,包括:
所述目标函数根据各所述方法对象的所述第一运行起始时间和所述第一运行结束时间,确定所述线程的第二运行起始时间和第二运行结束时间;
所述目标函数根据所述第二运行起始时间和所述第二运行结束时间之差,确定所述线程的第二运行耗时;
所述目标函数根据所述方法对象的所述第一运行起始时间和所述第一运行耗时,确定所述方法对象在所述线程中的运行起始顺序和结束顺序;
通过所述起始顺序和结束顺序,确定所述方法对象在所述线程中的调用关系。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京三快在线科技有限公司,未经北京三快在线科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811512388.8/1.html,转载请声明来源钻瓜专利网。