CN108197004A - Ios应用的方法耗时、加载视图耗时的监测方法及系统 - Google Patents

Ios应用的方法耗时、加载视图耗时的监测方法及系统 Download PDF

Info

Publication number
CN108197004A
CN108197004A CN201810065372.0A CN201810065372A CN108197004A CN 108197004 A CN108197004 A CN 108197004A CN 201810065372 A CN201810065372 A CN 201810065372A CN 108197004 A CN108197004 A CN 108197004A
Authority
CN
China
Prior art keywords
functions
objc
msgsend
api
calling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810065372.0A
Other languages
English (en)
Other versions
CN108197004B (zh
Inventor
张骏
张文明
陈少杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan Guyuan Technology Co ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810065372.0A priority Critical patent/CN108197004B/zh
Publication of CN108197004A publication Critical patent/CN108197004A/zh
Application granted granted Critical
Publication of CN108197004B publication Critical patent/CN108197004B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Telephonic Communication Services (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种IOS应用的方法耗时、加载视图耗时的监测方法及系统,涉及IOS应用技术领域,本发明将objc_msgSend函数指针设置为hook函数;IOS应用调用主线程中任一方法时,通过objc_msgSend函数指针调用hook函数,通过hook函数计算出IOS应用调用主线程中该方法时objc_msgSend函数的调用耗时;通过调用hook函数可分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时,由于主线程中方法的调用都会对应objc_msgSend函数的调用,objc_msgSend函数的调用耗时即为调取主线程中方法时所耗费时间,从而实现对IOS应用运行时调用主线程中各方法的调用耗时监控。

Description

IOS应用的方法耗时、加载视图耗时的监测方法及系统
技术领域
本发明涉及IOS应用技术领域,具体涉及一种IOS应用的方法耗时、加载视图耗时的监测方法及系统。
背景技术
在移动应用的开发过程中,可能会遇到一些性能瓶颈,例如程序运行的卡顿或内存无法正确的释放,都无法得到很好的监控或反馈。一般的方法是将手机连上电脑,利用Xcode(一种Mac OS X操作系统上的集成开发工具)所带的Instrument工具进行监控。Xcode自带的Instrument工具是一个以独立APP形式存在的工具集,包含了很多强大的检测功能:其中包括在真机和模拟器上进行性能测试,对APP进行性能分析,检查一个或多个应用或进程的行为。Instrument工具主要用于在调试过程中随时发现问题,及时优化。但是Instrument工具只能供有应用源码的程序员使用,因此必须连接电脑,无法测量用户真实使用场景下的性能,即无法在IOS App发布之后依然对IOS App的运行情况进行有效的监控。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种IOS应用的方法耗时、加载视图耗时的监测方法及系统,实现IOS App发布之后对IOSApp的方法耗时的有效监控。
为达到以上目的,本发明采取的技术方案是:一种IOS应用的方法耗时监测方法,其用于监测所述IOS应用调用的主线程中各方法的调用耗时:
将objc_msgSend函数指针设置为hook函数;所述hook函数包括:第一函数,其用于获取objc_msgSend函数的参数;第二函数,其用于使用objc_msgSend函数的参数调取objc_msgSend函数并记录开始调取时间;第三函数,其用于objc_msgSend函数调取完毕时,记录objc_msgSend函数的调取结束时间,根据调取开始时间和调取结束时间计算出调取objc_msgSend函数的调用耗时;
IOS应用调用主线程中任一方法时,通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出调取主线程中该方法时objc_msgSend函数的调用耗时;通过调用hook函数分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时;
定义一个Objective-C的类,并实现该类的单例加载;通过所述Objective-C的类分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时并转换为所述Objective-C的类中的对象。
在上述技术方案的基础上,创建一个C语言文件MethodCoreLib.c及其头文件MethodCoreLib.h;在所述头文件中创建C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API;在所述C语言文件MethodCoreLib.c文件中定义两个全局变量:拦截开关和拦截结果;拦截开关用于控制开始或停止通过所述objc_msgSend函数指针调用hook函数;拦截结果用于存储所述hook函数计算出的调取objc_msgSend函数的调用耗时;在C语言层开始拦截API中设置拦截开关为开始,在C语言层停止拦截API中设置拦截开关为停止,在C语言层获取拦截结果API中设置将拦截结果传出并置空;
在所述Objective-C的类中定义OC层开始拦截API和OC层停止拦截API;OC层开始拦截API用于调用C语言层开始拦截API,OC层停止拦截API用于调用C语言层停止拦截API和C语言层获取拦截结果API;
用户选择开始监测IOS应用调用的主线程中各方法的调用耗时,通过OC层开始拦截API调用C语言层开始拦截API开始通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出的调用主线程中各方法时objc_msgSend函数的调用耗时;将计算出的调用主线程中各方法时objc_msgSend函数的调用耗时分别添加进所述拦截结果;
用户选择停止监测IOS应用调用的主线程中各方法的调用耗时,通过OC层停止拦截API调用C语言层停止拦截API停止通过所述objc_msgSend函数指针调用hook函数,并通过C语言层获取拦截结果API从所述拦截结果中获取到调用主线程中各方法时objc_msgSend函数的调用耗时并置空所述拦截结果。
在上述技术方案的基础上,第二函数还用于从所述objc_msgSend函数的参数中获取调用主线程中方法的嵌套层级。
本发明还公开了一种IOS应用的方法耗时监测系统,包括:
函数指针替换模块,其用于将objc_msgSend函数指针替换为hook函数;所述hook函数包括:第一函数,其用于获取objc_msgSend函数的参数;第二函数,其用于使用objc_msgSend函数的参数调取objc_msgSend函数并记录开始调取时间;第三函数,其用于objc_msgSend函数调取完毕时,记录objc_msgSend函数的调取结束时间,根据调取开始时间和调取结束时间计算出调取objc_msgSend函数的调用耗时;
第一调用耗时计算模块,其用于IOS应用调用主线程中任一方法时,通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出调取主线程中该方法时objc_msgSend函数的调用耗时;通过调用hook函数分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时;
第一调用耗时获取模块,其用于定义一个Objective-C的类,并实现该类的单例加载;通过所述Objective-C的类分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时并转换为所述Objective-C的类中的对象。
在上述技术方案的基础上,所述IOS应用的方法耗时监测系统还包括C语言层API模块和OC层API模块;
C语言层API模块用于创建一个C语言文件MethodCoreLib.c及其头文件MethodCoreLib.h;在所述头文件中创建C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API;在所述C语言文件MethodCoreLib.c文件中定义两个全局变量:拦截开关和拦截结果;拦截开关用于控制开始或停止通过所述objc_msgSend函数指针调用hook函数;拦截结果用于存储所述hook函数计算出的调取objc_msgSend函数的调用耗时;在C语言层开始拦截API中设置拦截开关为开始,在C语言层停止拦截API中设置拦截开关为停止,在C语言层获取拦截结果API中设置将拦截结果传出并置空;
OC层API模块用于在所述Objective-C的类中定义OC层开始拦截API和OC层停止拦截API;OC层开始拦截API用于调用C语言层开始拦截API,OC层停止拦截API用于调用C语言层停止拦截API和C语言层获取拦截结果API;
所述第一调用耗时计算模块用于:用户选择开始监测IOS应用调用的主线程中各方法的调用耗时,通过OC层开始拦截API调用C语言层开始拦截API开始通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出的调用主线程中各方法时objc_msgSend函数的调用耗时;将计算出的调用主线程中各方法时objc_msgSend函数的调用耗时分别添加进所述拦截结果;
所述第一调用耗时获取模块用于:用户选择停止监测IOS应用调用的主线程中各方法的调用耗时,通过OC层停止拦截API调用C语言层停止拦截API停止通过所述objc_msgSend函数指针调用hook函数,并通过C语言层获取拦截结果API从所述拦截结果中获取到调用主线程中各方法时objc_msgSend函数的调用耗时并置空所述拦截结果。
本发明还公开了一种IOS应用的加载视图耗时监测方法:
将objc_msgSend函数指针替换为hook函数;所述hook函数包括:第一函数,其用于获取objc_msgSend函数的参数;第二函数,其用于使用objc_msgSend函数的参数调取objc_msgSend函数并记录开始调取时间;第三函数,其用于objc_msgSend函数调取完毕时,记录objc_msgSend函数的调取结束时间,根据调取开始时间和调取结束时间计算出调取objc_msgSend函数的调用耗时;
创建视图控制器的分类,在所述视图控制器的分类被加载的时候通过runtime函数将视图控制器生命循环中的ViewDidLoad函数交换为第四函数,将ViewDidAppear函数交换为第五函数;
视图开始加载时,调用第四函数,所述第四函数通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出调取objc_msgSend函数的调用耗时;
视图加载结束时,调用第五函数,通过所述第五函数获取所述hook函数计算出的调取objc_msgSend函数的调用耗时。
在上述技术方案的基础上,创建一个C语言文件MethodCoreLib.c及其头文件MethodCoreLib.h;在所述头文件中创建C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API;在所述C语言文件MethodCoreLib.c文件中定义两个全局变量:拦截开关和拦截结果;拦截开关用于控制开始或停止通过所述objc_msgSend函数指针调用hook函数;拦截结果用于存储所述hook函数计算出的调取objc_msgSend函数的调用耗时;在C语言层开始拦截API中设置拦截开关为开始,在C语言层停止拦截API中设置拦截开关为停止,在C语言层获取拦截结果API中设置将拦截结果传出并置空;
在所述Objective-C的类中定义OC层开始拦截API和OC层停止拦截API;OC层开始拦截API用于调用C语言层开始拦截API,OC层停止拦截API用于调用C语言层停止拦截API和C语言层获取拦截结果API;
视图开始加载时,调用第四函数,第四函数调用OC层开始拦截API,通过OC层开始拦截API调用C语言层开始拦截API,开始通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出调取objc_msgSend函数的调用耗时,并将调取objc_msgSend函数的调用耗时添加进所述拦截结果;
视图加载结束时,调用第五函数,第五函数调用OC层停止拦截API,通过OC层停止通过所述objc_msgSend函数指针调用hook函数,并通过C语言层获取拦截结果API从所述拦截结果中获取到调取objc_msgSend函数的调用耗时并置空所述拦截结果。
在上述技术方案的基础上,所述第二函数还用于从所述objc_msgSend函数的参数中获取调用主线程中方法的嵌套层级。
本发明还公开了一种IOS应用的加载视图耗时监测系统,包括:
函数指针替换模块,其用于将objc_msgSend函数指针替换为hook函数;所述hook函数包括:第一函数,其用于获取objc_msgSend函数的参数;第二函数,其用于使用objc_msgSend函数的参数调取objc_msgSend函数并记录开始调取时间;第三函数,其用于objc_msgSend函数调取完毕时,记录objc_msgSend函数的调取结束时间,根据调取开始时间和调取结束时间计算出调取objc_msgSend函数的调用耗时;
函数交换模块,其用于创建视图控制器的分类,在所述视图控制器的分类被加载的时候通过runtime函数将视图控制器生命循环中的ViewDidLoad函数交换为第四函数,将ViewDidAppear函数交换为第五函数;
第二调用耗时计算模块,其用于视图开始加载时,调用第四函数,第四函数通过所述objc_msgSend函数指针调用hook函数,通过调用所述hook函数计算出调取objc_msgSend函数的调用耗时;
第二调用耗时获取模块,其用于视图加载结束时,调用第五函数,通过第五函数获取所述hook函数计算出调取objc_msgSend函数的调用耗时。
在上述技术方案的基础上,所述IOS应用的加载视图耗时监测系统还包括C语言层API模块和OC层API模块;
所述C语言层API模块用于创建一个C语言文件MethodCoreLib.c及其头文件MethodCoreLib.h;在所述头文件中创建C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API;在所述C语言文件MethodCoreLib.c文件中定义两个全局变量:拦截开关和拦截结果;拦截开关用于控制开始或停止通过所述objc_msgSend函数指针调用hook函数;拦截结果用于存储所述hook函数计算出的调取objc_msgSend函数的调用耗时;在C语言层开始拦截API中设置拦截开关为开始,在C语言层停止拦截API中设置拦截开关为停止,在C语言层获取拦截结果API中设置将拦截结果传出并置空;
所述OC层API模块用于在所述Objective-C的类中定义OC层开始拦截API和OC层停止拦截API;OC层开始拦截API用于调用C语言层开始拦截API,OC层停止拦截API用于调用C语言层停止拦截API和C语言层获取拦截结果API;
所述第二调用耗时计算模块用于:视图开始加载时,通过OC层开始拦截API调用C语言层开始拦截API开始通过所述objc_msgSend函数指针调用hook函数,并将所述hook函数计算出的调取objc_msgSend函数的调用耗时添加进所述拦截结果;
所述第二调用耗时获取模块用于:视图加载结束时,通过OC层停止拦截API调用C语言层停止拦截API停止通过所述objc_msgSend函数指针调用hook函数,并通过C语言层获取拦截结果API从所述拦截结果中获取到调取objc_msgSend函数的调用耗时并置空所述拦截结果。
与现有技术相比,本发明的优点在于:
本发明将objc_msgSend函数指针设置为hook函数;IOS应用调用主线程中任一方法时,通过objc_msgSend函数指针调用hook函数,通过hook函数计算出IOS应用调用主线程中该方法时objc_msgSend函数的调用耗时;通过调用hook函数可分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时,由于主线程中方法的调用都会对应objc_msgSend函数的调用,objc_msgSend函数的调用耗时即为调取主线程中方法时所耗费时间,从而实现对IOS应用运行时调用主线程中各方法的调用耗时监控。
同时,objc_msgSend函数为C语言层的函数,因此,要在IOS系统中展示hook函数获取的objc_msgSend函数的调用耗时,还需要通过Objective-C的类从C语言层获取objc_msgSend函数的调用耗时并转换成Objective-C的类中的对象。
定义C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API以及OC层开始拦截API和OC层停止拦截API,实现了对是否调用hook函数获取objc_msgSend函数的调用耗时的控制,便于用户控制耗时监控的开始时间和结束时间。
在上述方案的基础上,需要监测加载视图耗时时,创建视图控制器的分类,在视图控制器的分类被加载的时候通过runtime函数将ViewDidLoad函数交换为第四函数,将ViewDidAppear函数交换为第五函数;视图开始加载时,调用第四函数通过hook函数计算出调取objc_msgSend函数的调用耗时;视图加载结束时,调用第五函数获取hook函数计算出的调取objc_msgSend函数的调用耗时,从而实现IOS应用运行时对加载视图耗时的实时监控。
附图说明
图1为本发明实施例中IOS应用的方法耗时的监测系统的结构示意图;
图2为本发明实施例中IOS应用的加载视图耗时的监测系统的结构示意图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
以下首先就本发明的术语进行解释和说明:
C语言文件及头文件:C语言文件,其后缀为.c。.c文件是程序文件,内含函数实现,变量定义等内容。头文件,其后缀为.h。.h文件是头文件,内含函数声明、宏定义、结构体定义等内容。
API(Application Programming Interface,应用程序编程接口),是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
Objective-C的类,类是核心支持面向对象编程及Objective-C的特点,通常被称为用户定义的类型。类是用来指定对象的形式,它结合了数据表示和方法操纵这些数据转换成一个整齐的包。
实现类单例加载,即保证一个类只生成一个实例对象。
objc_msgSend函数,objc_msgSend函数为IOS系统中负责消息发送的函数。在Objective-C中,主线程中方法的调用最终都会转为成消息发送,即主线程中方法的调用都会对应objc_msgSend函数的调用。因此,调取主线程中某一方法的调用耗时等同于对应的objc_msgSend函数的调用耗时。
runtime函数,Objective-C语言有一个运行时系统Objc Runtime,其实是一个Runtime库,将类结构体或对象结构体用runtime函数封装后,可以在程序运行时创建、检查、修改类、对象和它们的方法。
ViewDidLoad函数,viewDidLoad函数用于加载视图。
viewDidApper函数,UIViewController对象的视图已经加入到窗口时调用。
视图控制器(UIViewController),是iOS顶层视图的载体及控制器,用户与程序界面的交互都是由UIViewController来控制的,UIViewController管理UIView的生命周期及资源的加载与释放。
实施例1:
本发明实施例提供一种IOS应用的方法耗时监测方法,其用于监测IOS应用调用的主线程中各方法的调用耗时:
将objc_msgSend函数指针设置为hook函数;hook函数包括:第一函数,其用于获取objc_msgSend函数的参数;第二函数,其用于使用objc_msgSend函数的参数调取objc_msgSend函数并记录开始调取时间;第三函数,其用于objc_msgSend函数调取完毕时,记录objc_msgSend函数的调取结束时间,根据调取开始时间和调取结束时间计算出调取objc_msgSend函数的调用耗时;
IOS应用调用主线程中任一方法时,通过objc_msgSend函数指针调用hook函数,通过hook函数计算出调取主线程中该方法时objc_msgSend函数的调用耗时;通过调用hook函数分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时;
定义一个Objective-C的类,并实现该类的单例加载;通过Objective-C的类分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时并转换为Objective-C的类中的对象。
由于主线程中方法的调用都会对应objc_msgSend函数的调用,objc_msgSend函数的调用耗时即为调取主线程中方法时所耗费时间,从而实现对IOS应用运行时调用主线程中各方法的调用耗时监控。同时,objc_msgSend函数为C语言层的函数,因此,要在IOS系统中展示hook函数获取的objc_msgSend函数的调用耗时,还需要通过Objective-C的类从C语言层获取objc_msgSend函数的调用耗时并转换成Objective-C的类中的对象。
例如,主线程中依次执行方法A、B、C,通过hook函数可依次获取执行方法A时objc_msgSend函数的调用耗时、执行方法B时objc_msgSend函数的调用耗时、执行方法C时objc_msgSend函数的调用耗时。由于主线程中方法的调用都会对应objc_msgSend函数的调用,执行方法A时objc_msgSend函数的调用耗时即为调取主线程中方法A时的函数调用耗时,执行方法B时objc_msgSend函数的调用耗时即为调取主线程中方法B时的函数调用耗时,执行方法C时objc_msgSend函数的调用耗时即为调取主线程中方法C时的函数调用耗时,从而通过hook函数实现对IOS应用运行时调用主线程中各方法的调用耗时监控。
为了便于用户控制耗时监控的开始时间和结束时间,可通过定义C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API以及OC层开始拦截API和OC层停止拦截API,实现对是否调用hook函数获取objc_msgSend函数的调用耗时的控制,具体实现过程如下:
创建一个C语言文件MethodCoreLib.c及其头文件MethodCoreLib.h;在头文件中创建C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API;在C语言文件MethodCoreLib.c文件中定义两个全局变量:拦截开关和拦截结果;拦截开关用于控制开始或停止通过objc_msgSend函数指针调用hook函数;拦截结果用于存储hook函数计算出的调取objc_msgSend函数的调用耗时;在C语言层开始拦截API中设置拦截开关为开始,在C语言层停止拦截API中设置拦截开关为停止,在C语言层获取拦截结果API中设置将拦截结果传出并置空;
在Objective-C的类中定义OC层开始拦截API和OC层停止拦截API;OC层开始拦截API用于调用C语言层开始拦截API,OC层停止拦截API用于调用C语言层停止拦截API和C语言层获取拦截结果API;
用户选择开始监测IOS应用调用的主线程中各方法的调用耗时,通过OC层开始拦截API调用C语言层开始拦截API开始通过objc_msgSend函数指针调用hook函数,通过hook函数计算出的调用主线程中各方法时objc_msgSend函数的调用耗时;将计算出的调用主线程中各方法时objc_msgSend函数的调用耗时分别添加进拦截结果;
用户选择停止监测IOS应用调用的主线程中各方法的调用耗时,通过OC层停止拦截API调用C语言层停止拦截API停止通过objc_msgSend函数指针调用hook函数,并通过C语言层获取拦截结果API从拦截结果中获取到调用主线程中各方法时objc_msgSend函数的调用耗时并置空拦截结果。
第二函数还用于从objc_msgSend函数的参数中获取调用主线程中方法的嵌套层级。如调用objc_msgSend函数时,主线程中方法D的内部调用函数为函数D1,函数D1的内部调用函数为D2,上述函数嵌套调用关系即为主线程中方法D的嵌套层级。
实施例2:
参见图1所示,本发明实施例公开了一种IOS应用的方法耗时监测系统,包括:
函数指针替换模块,其用于将objc_msgSend函数指针替换为hook函数;hook函数包括:第一函数,其用于获取objc_msgSend函数的参数;第二函数,其用于使用objc_msgSend函数的参数调取objc_msgSend函数并记录开始调取时间;第三函数,其用于objc_msgSend函数调取完毕时,记录objc_msgSend函数的调取结束时间,根据调取开始时间和调取结束时间计算出调取objc_msgSend函数的调用耗时;
第一调用耗时计算模块,其用于IOS应用调用主线程中任一方法时,通过objc_msgSend函数指针调用hook函数,通过hook函数计算出调取主线程中该方法时objc_msgSend函数的调用耗时;通过调用hook函数分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时;
第一调用耗时获取模块,其用于定义一个Objective-C的类,并实现该类的单例加载;通过Objective-C的类分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时并转换为Objective-C的类中的对象。
IOS应用的方法耗时监测系统还包括C语言层API模块和OC层API模块;
C语言层API模块用于创建一个C语言文件MethodCoreLib.c及其头文件MethodCoreLib.h;在头文件中创建C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API;在C语言文件MethodCoreLib.c文件中定义两个全局变量:拦截开关和拦截结果;拦截开关用于控制开始或停止通过objc_msgSend函数指针调用hook函数;拦截结果用于存储hook函数计算出的调取objc_msgSend函数的调用耗时;在C语言层开始拦截API中设置拦截开关为开始,在C语言层停止拦截API中设置拦截开关为停止,在C语言层获取拦截结果API中设置将拦截结果传出并置空;
OC层API模块用于在Objective-C的类中定义OC层开始拦截API和OC层停止拦截API;OC层开始拦截API用于调用C语言层开始拦截API,OC层停止拦截API用于调用C语言层停止拦截API和C语言层获取拦截结果API;
第一调用耗时计算模块用于:用户选择开始监测IOS应用调用的主线程中各方法的调用耗时,通过OC层开始拦截API调用C语言层开始拦截API开始通过objc_msgSend函数指针调用hook函数,通过hook函数计算出的调用主线程中各方法时objc_msgSend函数的调用耗时;将计算出的调用主线程中各方法时objc_msgSend函数的调用耗时分别添加进拦截结果;
第一调用耗时获取模块用于:用户选择停止监测IOS应用调用的主线程中各方法的调用耗时,通过OC层停止拦截API调用C语言层停止拦截API停止通过objc_msgSend函数指针调用hook函数,并通过C语言层获取拦截结果API从拦截结果中获取到调用主线程中各方法时objc_msgSend函数的调用耗时并置空拦截结果。
实施例3:
本发明实施例公开了一种IOS应用的加载视图耗时监测方法:
在实施例1和2的基础上,需要监测加载视图耗时时,创建视图控制器的分类,在视图控制器的分类被加载的时候通过runtime函数将ViewDidLoad函数交换为第四函数,将ViewDidAppear函数交换为第五函数;视图开始加载时,调用第四函数通过hook函数计算出调取objc_msgSend函数的调用耗时;视图加载结束时,调用第五函数获取hook函数计算出的调取objc_msgSend函数的调用耗时,从而实现IOS应用运行时对加载视图耗时的实时监控,其具体实施过程如下:
将objc_msgSend函数指针替换为hook函数;hook函数包括:第一函数,其用于获取objc_msgSend函数的参数;第二函数,其用于使用objc_msgSend函数的参数调取objc_msgSend函数并记录开始调取时间;第三函数,其用于objc_msgSend函数调取完毕时,记录objc_msgSend函数的调取结束时间,根据调取开始时间和调取结束时间计算出调取objc_msgSend函数的调用耗时;
创建视图控制器的分类,在视图控制器的分类被加载的时候通过runtime函数将视图控制器生命循环中的ViewDidLoad函数交换为第四函数,将ViewDidAppear函数交换为第五函数;
视图开始加载时,调用第四函数,第四函数通过objc_msgSend函数指针调用hook函数,通过hook函数计算出调取objc_msgSend函数的调用耗时;
视图加载结束时,调用第五函数,通过第五函数获取hook函数计算出的调取objc_msgSend函数的调用耗时。
创建一个C语言文件MethodCoreLib.c及其头文件MethodCoreLib.h;在头文件中创建C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API;在C语言文件MethodCoreLib.c文件中定义两个全局变量:拦截开关和拦截结果;拦截开关用于控制开始或停止通过objc_msgSend函数指针调用hook函数;拦截结果用于存储hook函数计算出的调取objc_msgSend函数的调用耗时;在C语言层开始拦截API中设置拦截开关为开始,在C语言层停止拦截API中设置拦截开关为停止,在C语言层获取拦截结果API中设置将拦截结果传出并置空;
在Objective-C的类中定义OC层开始拦截API和OC层停止拦截API;OC层开始拦截API用于调用C语言层开始拦截API,OC层停止拦截API用于调用C语言层停止拦截API和C语言层获取拦截结果API;
视图开始加载时,调用第四函数,第四函数调用OC层开始拦截API,通过OC层开始拦截API调用C语言层开始拦截API,开始通过objc_msgSend函数指针调用hook函数,通过hook函数计算出调取objc_msgSend函数的调用耗时,并将调取objc_msgSend函数的调用耗时添加进拦截结果;
视图加载结束时,调用第五函数,第五函数调用OC层停止拦截API,通过OC层停止通过objc_msgSend函数指针调用hook函数,并通过C语言层获取拦截结果API从拦截结果中获取到调取objc_msgSend函数的调用耗时并置空拦截结果。
第二函数还用于从objc_msgSend函数的参数中获取调用主线程中方法的嵌套层级。如调用objc_msgSend函数时,主线程中方法D的内部调用函数为函数D1,函数D1的内部调用函数为D2,上述函数嵌套调用关系即为主线程中方法D的嵌套层级。
实施例4:
在实施例1和2的基础上,本实施例公开了一种IOS应用的加载视图耗时监测系统,参见图2所示,包括:
函数指针替换模块,其用于将objc_msgSend函数指针替换为hook函数;hook函数包括:第一函数,其用于获取objc_msgSend函数的参数;第二函数,其用于使用objc_msgSend函数的参数调取objc_msgSend函数并记录开始调取时间;第三函数,其用于objc_msgSend函数调取完毕时,记录objc_msgSend函数的调取结束时间,根据调取开始时间和调取结束时间计算出调取objc_msgSend函数的调用耗时;
函数交换模块,其用于创建视图控制器的分类,在视图控制器的分类被加载的时候通过runtime函数将视图控制器生命循环中的ViewDidLoad函数交换为第四函数,将ViewDidAppear函数交换为第五函数;
第二调用耗时计算模块,其用于视图开始加载时,调用第四函数,第四函数通过objc_msgSend函数指针调用hook函数,通过调用hook函数计算出调取objc_msgSend函数的调用耗时;
第二调用耗时获取模块,其用于视图加载结束时,调用第五函数,通过第五函数获取hook函数计算出调取objc_msgSend函数的调用耗时。
IOS应用的加载视图耗时监测系统还包括C语言层API模块和OC层API模块;
C语言层API模块用于创建一个C语言文件MethodCoreLib.c及其头文件MethodCoreLib.h;在头文件中创建C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API;在C语言文件MethodCoreLib.c文件中定义两个全局变量:拦截开关和拦截结果;拦截开关用于控制开始或停止通过objc_msgSend函数指针调用hook函数;拦截结果用于存储hook函数计算出的调取objc_msgSend函数的调用耗时;在C语言层开始拦截API中设置拦截开关为开始,在C语言层停止拦截API中设置拦截开关为停止,在C语言层获取拦截结果API中设置将拦截结果传出并置空;
OC层API模块用于在Objective-C的类中定义OC层开始拦截API和OC层停止拦截API;OC层开始拦截API用于调用C语言层开始拦截API,OC层停止拦截API用于调用C语言层停止拦截API和C语言层获取拦截结果API;
第二调用耗时计算模块用于:视图开始加载时,通过OC层开始拦截API调用C语言层开始拦截API开始通过objc_msgSend函数指针调用hook函数,并将hook函数计算出的调取objc_msgSend函数的调用耗时添加进拦截结果;
第二调用耗时获取模块用于:视图加载结束时,通过OC层停止拦截API调用C语言层停止拦截API停止通过objc_msgSend函数指针调用hook函数,并通过C语言层获取拦截结果API从拦截结果中获取到调取objc_msgSend函数的调用耗时并置空拦截结果。
实施例5:
本发明实施例还公开了一种存储介质,该存储介质上存储有计算机程序,计算机程序被处理器执行时实现IOS应用的方法耗时监测方法或IOS应用的加载视图耗时监测方法。
实施例6:
本发明实施例还公开了一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现IOS应用的方法耗时监测方法或IOS应用的加载视图耗时监测方法。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (10)

1.一种IOS应用的方法耗时监测方法,其用于监测所述IOS应用调用的主线程中各方法的调用耗时,其特征在于:
将objc_msgSend函数指针设置为hook函数;所述hook函数包括:第一函数,其用于获取objc_msgSend函数的参数;第二函数,其用于使用objc_msgSend函数的参数调取objc_msgSend函数并记录开始调取时间;第三函数,其用于objc_msgSend函数调取完毕时,记录objc_msgSend函数的调取结束时间,根据调取开始时间和调取结束时间计算出调取objc_msgSend函数的调用耗时;
IOS应用调用主线程中任一方法时,通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出调取主线程中该方法时objc_msgSend函数的调用耗时;通过调用hook函数分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时;
定义一个Objective-C的类,并实现该类的单例加载;通过所述Objective-C的类分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时并转换为所述Objective-C的类中的对象。
2.如权利要求1所述的一种IOS应用的方法耗时监测方法,其特征在于:
创建一个C语言文件MethodCoreLib.c及其头文件MethodCoreLib.h;在所述头文件中创建C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API;在所述C语言文件MethodCoreLib.c文件中定义两个全局变量:拦截开关和拦截结果;拦截开关用于控制开始或停止通过所述objc_msgSend函数指针调用hook函数;拦截结果用于存储所述hook函数计算出的调取objc_msgSend函数的调用耗时;在C语言层开始拦截API中设置拦截开关为开始,在C语言层停止拦截API中设置拦截开关为停止,在C语言层获取拦截结果API中设置将拦截结果传出并置空;
在所述Objective-C的类中定义OC层开始拦截API和OC层停止拦截API;OC层开始拦截API用于调用C语言层开始拦截API,OC层停止拦截API用于调用C语言层停止拦截API和C语言层获取拦截结果API;
用户选择开始监测IOS应用调用的主线程中各方法的调用耗时,通过OC层开始拦截API调用C语言层开始拦截API开始通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出的调用主线程中各方法时objc_msgSend函数的调用耗时;将计算出的调用主线程中各方法时objc_msgSend函数的调用耗时分别添加进所述拦截结果;
用户选择停止监测IOS应用调用的主线程中各方法的调用耗时,通过OC层停止拦截API调用C语言层停止拦截API停止通过所述objc_msgSend函数指针调用hook函数,并通过C语言层获取拦截结果API从所述拦截结果中获取到调用主线程中各方法时objc_msgSend函数的调用耗时并置空所述拦截结果。
3.如权利要求1所述的一种IOS应用的方法耗时监测方法,其特征在于:第二函数还用于从所述objc_msgSend函数的参数中获取调用主线程中方法的嵌套层级。
4.一种IOS应用的方法耗时监测系统,其特征在于,包括:
函数指针替换模块,其用于将objc_msgSend函数指针替换为hook函数;所述hook函数包括:第一函数,其用于获取objc_msgSend函数的参数;第二函数,其用于使用objc_msgSend函数的参数调取objc_msgSend函数并记录开始调取时间;第三函数,其用于objc_msgSend函数调取完毕时,记录objc_msgSend函数的调取结束时间,根据调取开始时间和调取结束时间计算出调取objc_msgSend函数的调用耗时;
第一调用耗时计算模块,其用于IOS应用调用主线程中任一方法时,通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出调取主线程中该方法时objc_msgSend函数的调用耗时;通过调用hook函数分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时;
第一调用耗时获取模块,其用于定义一个Objective-C的类,并实现该类的单例加载;通过所述Objective-C的类分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时并转换为所述Objective-C的类中的对象。
5.如权利要求4所述的一种IOS应用的方法耗时监测系统,其特征在于:
所述IOS应用的方法耗时监测系统还包括C语言层API模块和OC层API模块;
C语言层API模块用于创建一个C语言文件MethodCoreLib.c及其头文件MethodCoreLib.h;在所述头文件中创建C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API;在所述C语言文件MethodCoreLib.c文件中定义两个全局变量:拦截开关和拦截结果;拦截开关用于控制开始或停止通过所述objc_msgSend函数指针调用hook函数;拦截结果用于存储所述hook函数计算出的调取objc_msgSend函数的调用耗时;在C语言层开始拦截API中设置拦截开关为开始,在C语言层停止拦截API中设置拦截开关为停止,在C语言层获取拦截结果API中设置将拦截结果传出并置空;
OC层API模块用于在所述Objective-C的类中定义OC层开始拦截API和OC层停止拦截API;OC层开始拦截API用于调用C语言层开始拦截API,OC层停止拦截API用于调用C语言层停止拦截API和C语言层获取拦截结果API;
所述第一调用耗时计算模块用于:用户选择开始监测IOS应用调用的主线程中各方法的调用耗时,通过OC层开始拦截API调用C语言层开始拦截API开始通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出的调用主线程中各方法时objc_msgSend函数的调用耗时;将计算出的调用主线程中各方法时objc_msgSend函数的调用耗时分别添加进所述拦截结果;
所述第一调用耗时获取模块用于:用户选择停止监测IOS应用调用的主线程中各方法的调用耗时,通过OC层停止拦截API调用C语言层停止拦截API停止通过所述objc_msgSend函数指针调用hook函数,并通过C语言层获取拦截结果API从所述拦截结果中获取到调用主线程中各方法时objc_msgSend函数的调用耗时并置空所述拦截结果。
6.一种IOS应用的加载视图耗时监测方法,其特征在于:
将objc_msgSend函数指针替换为hook函数;所述hook函数包括:第一函数,其用于获取objc_msgSend函数的参数;第二函数,其用于使用objc_msgSend函数的参数调取objc_msgSend函数并记录开始调取时间;第三函数,其用于objc_msgSend函数调取完毕时,记录objc_msgSend函数的调取结束时间,根据调取开始时间和调取结束时间计算出调取objc_msgSend函数的调用耗时;
创建视图控制器的分类,在所述视图控制器的分类被加载的时候通过runtime函数将视图控制器生命循环中的ViewDidLoad函数交换为第四函数,将ViewDidAppear函数交换为第五函数;
视图开始加载时,调用第四函数,所述第四函数通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出调取objc_msgSend函数的调用耗时;
视图加载结束时,调用第五函数,通过所述第五函数获取所述hook函数计算出的调取objc_msgSend函数的调用耗时。
7.如权利要求6所述的一种IOS应用的加载视图耗时监测方法,其特征在于:
创建一个C语言文件MethodCoreLib.c及其头文件MethodCoreLib.h;在所述头文件中创建C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API;在所述C语言文件MethodCoreLib.c文件中定义两个全局变量:拦截开关和拦截结果;拦截开关用于控制开始或停止通过所述objc_msgSend函数指针调用hook函数;拦截结果用于存储所述hook函数计算出的调取objc_msgSend函数的调用耗时;在C语言层开始拦截API中设置拦截开关为开始,在C语言层停止拦截API中设置拦截开关为停止,在C语言层获取拦截结果API中设置将拦截结果传出并置空;
在所述Objective-C的类中定义OC层开始拦截API和OC层停止拦截API;OC层开始拦截API用于调用C语言层开始拦截API,OC层停止拦截API用于调用C语言层停止拦截API和C语言层获取拦截结果API;
视图开始加载时,调用第四函数,第四函数调用OC层开始拦截API,通过OC层开始拦截API调用C语言层开始拦截API,开始通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出调取objc_msgSend函数的调用耗时,并将调取objc_msgSend函数的调用耗时添加进所述拦截结果;
视图加载结束时,调用第五函数,第五函数调用OC层停止拦截API,通过OC层停止通过所述objc_msgSend函数指针调用hook函数,并通过C语言层获取拦截结果API从所述拦截结果中获取到调取objc_msgSend函数的调用耗时并置空所述拦截结果。
8.如权利要求6所述的一种IOS应用的方法耗时监测方法,其特征在于:所述第二函数还用于从所述objc_msgSend函数的参数中获取调用主线程中方法的嵌套层级。
9.一种IOS应用的加载视图耗时监测系统,其特征在于,包括:
函数指针替换模块,其用于将objc_msgSend函数指针替换为hook函数;所述hook函数包括:第一函数,其用于获取objc_msgSend函数的参数;第二函数,其用于使用objc_msgSend函数的参数调取objc_msgSend函数并记录开始调取时间;第三函数,其用于objc_msgSend函数调取完毕时,记录objc_msgSend函数的调取结束时间,根据调取开始时间和调取结束时间计算出调取objc_msgSend函数的调用耗时;
函数交换模块,其用于创建视图控制器的分类,在所述视图控制器的分类被加载的时候通过runtime函数将视图控制器生命循环中的ViewDidLoad函数交换为第四函数,将ViewDidAppear函数交换为第五函数;
第二调用耗时计算模块,其用于视图开始加载时,调用第四函数,第四函数通过所述objc_msgSend函数指针调用hook函数,通过调用所述hook函数计算出调取objc_msgSend函数的调用耗时;
第二调用耗时获取模块,其用于视图加载结束时,调用第五函数,通过第五函数获取所述hook函数计算出调取objc_msgSend函数的调用耗时。
10.如权利要求9所述的一种IOS应用的加载视图耗时监测系统,其特征在于:
所述IOS应用的加载视图耗时监测系统还包括C语言层API模块和OC层API模块;
所述C语言层API模块用于创建一个C语言文件MethodCoreLib.c及其头文件MethodCoreLib.h;在所述头文件中创建C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API;在所述C语言文件MethodCoreLib.c文件中定义两个全局变量:拦截开关和拦截结果;拦截开关用于控制开始或停止通过所述objc_msgSend函数指针调用hook函数;拦截结果用于存储所述hook函数计算出的调取objc_msgSend函数的调用耗时;在C语言层开始拦截API中设置拦截开关为开始,在C语言层停止拦截API中设置拦截开关为停止,在C语言层获取拦截结果API中设置将拦截结果传出并置空;
所述OC层API模块用于在所述Objective-C的类中定义OC层开始拦截API和OC层停止拦截API;OC层开始拦截API用于调用C语言层开始拦截API,OC层停止拦截API用于调用C语言层停止拦截API和C语言层获取拦截结果API;
所述第二调用耗时计算模块用于:视图开始加载时,通过OC层开始拦截API调用C语言层开始拦截API开始通过所述objc_msgSend函数指针调用hook函数,并将所述hook函数计算出的调取objc_msgSend函数的调用耗时添加进所述拦截结果;
所述第二调用耗时获取模块用于:视图加载结束时,通过OC层停止拦截API调用C语言层停止拦截API停止通过所述objc_msgSend函数指针调用hook函数,并通过C语言层获取拦截结果API从所述拦截结果中获取到调取objc_msgSend函数的调用耗时并置空所述拦截结果。
CN201810065372.0A 2018-01-23 2018-01-23 Ios应用的方法耗时、加载视图耗时的监测方法及系统 Active CN108197004B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810065372.0A CN108197004B (zh) 2018-01-23 2018-01-23 Ios应用的方法耗时、加载视图耗时的监测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810065372.0A CN108197004B (zh) 2018-01-23 2018-01-23 Ios应用的方法耗时、加载视图耗时的监测方法及系统

Publications (2)

Publication Number Publication Date
CN108197004A true CN108197004A (zh) 2018-06-22
CN108197004B CN108197004B (zh) 2021-04-27

Family

ID=62590500

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810065372.0A Active CN108197004B (zh) 2018-01-23 2018-01-23 Ios应用的方法耗时、加载视图耗时的监测方法及系统

Country Status (1)

Country Link
CN (1) CN108197004B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109471804A (zh) * 2018-11-14 2019-03-15 苏州科达科技股份有限公司 iOS中的应用检测方法、装置及存储介质
CN109634822A (zh) * 2018-11-27 2019-04-16 平安科技(深圳)有限公司 一种函数耗时统计方法、装置、存储介质及终端设备
CN109783161A (zh) * 2018-12-11 2019-05-21 北京三快在线科技有限公司 iOS系统中应用程序的运行信息确定方法、装置
CN112698890A (zh) * 2020-12-31 2021-04-23 百果园技术(新加坡)有限公司 函数耗时采集方法、装置、设备及存储介质
CN113535457A (zh) * 2021-09-14 2021-10-22 腾讯科技(深圳)有限公司 检测方法、装置、设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106055462A (zh) * 2016-05-20 2016-10-26 腾讯科技(深圳)有限公司 一种时长获取方法和装置
CN106649084A (zh) * 2016-09-14 2017-05-10 腾讯科技(深圳)有限公司 函数调用信息的获取方法及装置、测试设备
WO2017077333A1 (en) * 2015-11-06 2017-05-11 City Odds Capital Limited A graphical user interface for a mathematical method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017077333A1 (en) * 2015-11-06 2017-05-11 City Odds Capital Limited A graphical user interface for a mathematical method
CN106055462A (zh) * 2016-05-20 2016-10-26 腾讯科技(深圳)有限公司 一种时长获取方法和装置
CN106649084A (zh) * 2016-09-14 2017-05-10 腾讯科技(深圳)有限公司 函数调用信息的获取方法及装置、测试设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109471804A (zh) * 2018-11-14 2019-03-15 苏州科达科技股份有限公司 iOS中的应用检测方法、装置及存储介质
CN109634822A (zh) * 2018-11-27 2019-04-16 平安科技(深圳)有限公司 一种函数耗时统计方法、装置、存储介质及终端设备
CN109783161A (zh) * 2018-12-11 2019-05-21 北京三快在线科技有限公司 iOS系统中应用程序的运行信息确定方法、装置
CN109783161B (zh) * 2018-12-11 2020-08-04 北京三快在线科技有限公司 iOS系统中应用程序的运行信息确定方法、装置
CN112698890A (zh) * 2020-12-31 2021-04-23 百果园技术(新加坡)有限公司 函数耗时采集方法、装置、设备及存储介质
CN113535457A (zh) * 2021-09-14 2021-10-22 腾讯科技(深圳)有限公司 检测方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN108197004B (zh) 2021-04-27

Similar Documents

Publication Publication Date Title
CN108197004A (zh) Ios应用的方法耗时、加载视图耗时的监测方法及系统
US9529692B2 (en) Memory management tools
EP1428125B1 (en) Monitoring in component-based systems at runtime
DE112012003716B4 (de) Erzeugen von kompiliertem Code, der Registeraktivität angibt
Olsson et al. A dataflow approach to event‐based debugging
CN105930186B (zh) 多cpu的软件加载方法及基于多cpu的软件加载装置
US10102046B2 (en) In-memory data analytic system that provides an integrated tracking mechanism for explicit memory resources
CN108197032A (zh) Ios应用的主线程卡顿监测方法、介质、设备及系统
CN110362301B (zh) 一种终端应用行为反射的处理方法
WO2007070554A2 (en) System and method for thread creation and memory management in an object-oriented programming environment
CN113127314B (zh) 一种检测程序性能瓶颈的方法、装置及计算机设备
US10241895B2 (en) Memory stack trace management tool
CN101206614A (zh) 仿真特殊功能寄存器的仿真器
US20080168239A1 (en) Architecture support of memory access coloring
US20240134659A1 (en) Java bytecode injection methods and apparatuses, electronic devices, and storage media
CN104778087B (zh) 一种信息处理方法以及信息处理装置
CN117591327A (zh) core文件生成方法、装置、电子设备及存储介质
CN108829391A (zh) 一种Fragment中控件识别方法及系统
CN110347448B (zh) 一种构造终端应用行为的运行时模型的方法
CN108197005B (zh) Ios应用的底层运行性能监测方法、介质、设备及系统
US7350210B2 (en) Generic data persistence application program interface
WO2014107545A1 (en) Declaration of lifetime of resource reference
CN108563507A (zh) 一种内存管理方法、装置、设备及可读存储介质
CN115422008A (zh) 无侵入式的进程监控方法、装置、设备及存储介质
CN108304294A (zh) Ios应用的实时帧数监测方法、存储介质、设备及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240305

Address after: Room 701-I23, Building 1.2, Chenzhou Strategic Emerging Industry Park, East Side of Linyi Avenue, Bailutang Town, Chenzhou City, Chenzhou Area, China (Hunan) Pilot Free Trade Zone, Chenzhou City, Hunan Province, 423000, China

Patentee after: Hunan Guyuan Technology Co.,Ltd.

Country or region after: China

Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

Country or region before: China