基于汇编实现 hook objc_msgSend,统计方法耗时的方案

文章目录


简介

首先,iOS 中进行 hook 的方案有多种,这里使用的是 Facebook 的 fishhook 库:Github:fishhook

hook objc_msgsend ,货拉拉技术团队已有完善的方案:基于汇编实现objc_msgSend hook方法耗时的方案

另外,它们还开源了基于fishhook、汇编 hook objc_msgsend 并支持方法耗时可视化的项目:hll-wp-guldan-ios

接入

首先在 Podfile 中添加:

cpp 复制代码
pod 'Guldan', :git => "https://github.com/HuolalaTech/hll-wp-guldan-ios.git"

然后设置要监控的代码片段:

objectivec 复制代码
[GDNOCMethodTimeProfiler start];
// 下载图片
[self downloadImages];
[GDNOCMethodTimeProfiler stop];
[GDNOCMethodTimeProfiler handleRecordsWithComplete:^(NSArray<NSString *> * _Nonnull filePaths) {
       // file path
       for (NSString *filePath in filePaths) {
             NSLog(@"File path: %@", filePath);
         }
   }];

从控制台拿到 path:

最后将 path 的文件拖入 chrome://tracing/ :

经测试,模拟器(arm64)和真机均支持,不支持模拟器(x86_64)。

相关推荐
AI-小柒1 小时前
开发者一站式数据解决方案:通过 DataEyes API 一键配置智能数据采集与分析工具
大数据·人工智能·windows·http·macos
denggun123451 小时前
结构化并发(Structured Concurrency)
开发语言·ios·swift
CHQIUU1 小时前
外置硬盘格式选择指南:Windows与Mac双系统通用方案
windows·macos
BugShare1 小时前
macOS的Dock栏怎么像Win一样鼠标悬浮时预览快速选择
macos·计算机外设
寂夜了无痕2 小时前
旧版本mac 2016款升级新系统Sequoia 详细操作步骤
macos·旧mac升级新系统
___波子 Pro Max.2 小时前
解决brew安装慢问题
macos
weixin_403810134 小时前
EasyClick iOS USB版本蓝牙点击坐标代码
ios·自动化·代理模式
Lixun4 小时前
Mac安装Homebrew教程:解决brew安装失败(国内镜像安装方法)
macos
前端嘣擦擦4 小时前
mac 安装 nvm + node + npm(国内镜像 + 官方安装步骤)
前端·macos·npm
小江的记录本5 小时前
【MacOS】MacBook Pro 键盘全解析 + macOS 快捷键大全
java·经验分享·学习·macos·计算机外设·键盘·敏捷开发