iOS 常用调试工具大全-打造你的调试武器库

作者:sweet丶日期:2026/1/24

还记得你第一次使用NSLog(@"Hello, World!")的时刻吗?那是调试的起点。但随着应用复杂度呈指数级增长,我们需要的工具也经历了革命性进化:

  • 第一代:基础输出(NSLogprint
  • 第二代:图形化界面(Xcode调试器、Instruments)
  • 第三代:运行时动态调试(FLEX、Lookin)
  • 第四代:智能化监控(性能追踪、自动化检测)

今天,一个成熟的iOS开发者工具箱中,至少需要掌握3-5种核心调试工具,它们就像外科医生的手术刀——精准、高效、各有所长。

一、运行时调试工具

1. FLEX (Flipboard Explorer)

功能最全的运行时调试套件,集成后可以测试期间随时开启\关闭工具条,比如设置摇一摇后启动。

1优点: 功能全面,无需连接电脑
2缺点: 内存占用稍大
3场景: 日常开发调试、UI问题排查
4GitHub: https://github.com/FLEXTool/FLEX?tab=readme-ov-file
5

主要功能:

  • 手机上检查和修改层次结构中的视图。
  • 查看对象内存分配,查看任何对象的属性和ivar,动态修改许多属性和ivar,动态调用实例和类方法。
  • 查看详细的网络请求历史记录,包括时间、标头和完整响应。
  • 查看系统日志消息(例如,来自NSLog)。
  • 查看沙盒中的文件,查看所有的bundle和资源文件,浏览文件系统中的SQLite/Rerm数据库。
  • 动态查看和修改NSUserDefaults值。

2. Lookin - 腾讯出品

3D视图层级工具,类Xcode Inspector和Reveal。相比Xcode中查看图层的优势有两个:

  • 独立于Xcode运行,不会被Xcode阻断,能显示view的被引用的属性名。
  • 集成了'LookinServer'库的APP启动后,在Mac上启动Lookin后即可刷新显示当前图层。(真机需连接电脑后才展示)
1// 集成步骤一:官网下载lookin;
2-  官网: https://lookin.work
3-  GitHub: https://github.com/QMUI/LookinServer
4
5// 集成步骤二:
6CocoaPods安装:
7// 1.如果是OC工程
8pod 'LookinServer', :configurations => ['Debug']
9// 2.如果是OC工程
10//  iOS 项目的 Podfile  添加 “Swift” 这个 Subspec
11pod 'LookinServer', :subspecs => ['Swift'], :configurations => ['Debug']
12// 或者添加 “SwiftAndNoHook”这个 Subspec 也行
13pod 'LookinServer', :subspecs => ['SwiftAndNoHook'], :configurations => ['Debug']
14
15

二、网络调试工具

1. Proxyman - 现代网络调试神器

1// 官网: https://proxyman.io
2// 特点:
3 现代UI,操作流畅
4 HTTPS解密(无需安装证书到系统)
5 重放、修改、拦截请求
6 Map Local/Map Remote功能
7 脚本支持(JavaScript
8 支持Apple Silicon
9
10使用场景:
11 API接口调试
12 图片/资源请求优化
13 模拟慢速网络
14 修改响应数据测试
15

2. Charles - 老牌网络代理

1// 官网: https://www.charlesproxy.com
2// 特点:
3 功能极其全面
4 跨平台支持
5 脚本功能强大(Charles Proxy Script
6 带宽限制、断点调试
7 支持HTTP/2HTTP/3
8
9设置步骤:
101. 安装Charles
112. 在iOS设备设置代理
123. 安装Charles根证书
134. 信任证书(设置→通用→关于→证书信任设置)
14
15// 常用功能:
16 Breakpoints(请求拦截修改)
17 Rewrite(规则重写)
18 Map Local(本地文件映射)
19 Throttle(网络限速)
20

3. mitmproxy - 开源命令行工具

1# 官网: https://mitmproxy.org
2# 特点:
3 完全开源免费
4 命令行操作,适合自动化
5 脚本扩展(Python)
6 支持透明代理
7
8# 安装:
9brew install mitmproxy
10
11# 使用:
12# 启动代理
13mitmproxy --mode transparent --showhost
14
15# iOS设置:
16# 1. 安装证书: mitm.it
17# 2. 配置Wi-Fi代理
18

三、UI/布局调试工具

1. Reveal - 专业的UI调试工具

1// 官网: https://revealapp.com
2// 特点:
3 实时3D视图层级
4 详细的AutoLayout约束查看
5 内存图查看器
6 支持SwiftUI预览
7 强大的筛选和搜索
8
9// 集成:
10// 方式1: 通过Reveal Server框架
11pod 'Reveal-SDK', :configurations => ['Debug']
12
13// 方式2: LLDB加载(无需集成代码)
14(lldb) expr (void)[[NSClassFromString(@"IBARevealLoader") class] revealApplication];
15
16// 价格: 付费(提供免费试用)
17

2. InjectionIII - 热重载神器

1// GitHub: https://github.com/johnno1962/InjectionIII
2// 特点:
3 代码修改后实时生效
4 无需重新编译运行
5 支持SwiftObjective-C
6 保留应用状态
7
8// 安装:
9# App Store搜索 "InjectionIII"
10
11// 配置:
121. 下载安装InjectionIII
132. AppDelegate中配置:
14#if DEBUG
15Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle")?.load()
16#endif
17
183. 项目添加文件监视:
19// 在InjectionIII App中添加项目路径
20

四、性能调试工具

1. Xcode Instruments - 官方性能分析套件

1// 核心工具集:
2┌─────────────────────────────────────┐
3          Xcode Instruments          
4├─────────────────────────────────────┤
5 Time Profiler    # CPU使用分析       
6 Allocations      # 内存分配分析      
7 Leaks           # 内存泄漏检测      
8 Network         # 网络活动分析      
9 Energy Log      # 电量消耗分析      
10 Metal System    # GPU性能分析       
11 SwiftUI         # SwiftUI性能分析   
12└─────────────────────────────────────┘
13
14// 使用技巧:
151. 录制时过滤系统调用:
16   Call Tree:  Hide System Libraries
17               Invert Call Tree
18               Flattern Recursion
19
202. 内存图调试:
21   Debug Memory Graph按钮
22   查看循环引用、内存泄漏
23
243. 使用Markers:
25   import os
26   let log = OSLog(subsystem: "com.app", category: "performance")
27   os_signpost(.begin, log: log, name: "Network Request")
28   // ... 操作
29   os_signpost(.end, log: log, name: "Network Request")
30

2. MetricKit - 线上性能监控框架

1// Apple官方性能数据收集框架
2import MetricKit
3
4class MetricKitManager: MXMetricManagerSubscriber {
5    static let shared = MetricKitManager()
6    
7    private init() {
8        let manager = MXMetricManager.shared
9        manager.add(self)
10    }
11    
12    func didReceive(_ payloads: [MXMetricPayload]) {
13        // 接收性能数据
14        for payload in payloads {
15            print("CPU: \(payload.cpuMetrics)")
16            print("内存: \(payload.memoryMetrics)")
17            print("启动时间: \(payload.launchMetrics)")
18            print("磁盘IO: \(payload.diskIOMetrics)")
19        }
20    }
21    
22    func didReceive(_ payloads: [MXDiagnosticPayload]) {
23        // 接收诊断数据(崩溃、卡顿等)
24    }
25}
26
27// 需要用户授权,适合生产环境监控
28

3. Tracy - 腾讯开源的性能监控

1// GitHub: https://github.com/Tencent/tracy
2// 特点:
3 卡顿监控(主线程阻塞检测)
4 内存泄漏检测
5 大对象分配监控
6 网络性能监控
7 崩溃收集
8
9// 集成:
10pod 'Tracy', :configurations => ['Debug']
11
12// 使用:
13Tracy.start()
14// 自动监控各种性能指标
15

五、内存/崩溃调试工具

1. MLeaksFinder - 腾讯出品的内存泄漏检测

1// GitHub: https://github.com/Tencent/MLeaksFinder
2// 特点:
3 自动检测视图控制器内存泄漏
4 无需编写任何代码
5 支持自定义白名单
6 精准定位泄漏对象
7
8// 原理:
9// 监听UIViewController的pop/dismiss
10// 延迟检查是否仍然存在
11
12// 集成:
13pod 'MLeaksFinder'
14
15// 自定义配置:
16// 1. 添加白名单
17[NSClassFromString(@"WhiteListClass") class]
18
19// 2. 忽略特定泄漏
20[MLeaksFinder addIgnoreClass:[IgnoreClass class]]
21

2. FBRetainCycleDetector - Facebook循环引用检测

1// GitHub: https://github.com/facebook/FBRetainCycleDetector
2// 特点:
3 检测Objective-C对象的循环引用
4 支持检测NSTimer的强引用
5 可集成到单元测试中
6 Facebook内部广泛使用
7
8// 使用:
9let detector = FBRetainCycleDetector()
10detector.addCandidate(myObject)
11let cycles = detector.findRetainCycles()
12
13// 输出格式化的循环引用链
14for cycle in cycles {
15    print(FBRetainCycleDetectorFormatter.format(cycle))
16}
17

3. KSCrash - 强大的崩溃收集框架

1// GitHub: https://github.com/kstenerud/KSCrash
2// 特点:
3 捕获所有类型崩溃(OC异常、C++异常、Mach异常等)
4 生成完整的崩溃报告
5 支持符号化
6 可自定义上报服务器
7
8// 集成:
9pod 'KSCrash'
10
11// 配置:
12import KSCrash
13
14let installation = makeEmailInstallation("crash@company.com")
15installation.addConditionalAlert(withTitle: "Crash Detected",
16                                message: "The app crashed last time")
17KSCrash.shared().install()
18
19// 高级功能:
20// 1. 用户数据记录
21KSCrash.shared().userInfo = ["user_id": "123"]
22
23// 2. 自定义日志
24KSCrash.shared().log.error("Something went wrong")
25
26// 3. 监控卡顿
27KSCrash.shared().monitorDeadlock = true
28

六、日志调试工具

1. CocoaLumberjack - 专业日志框架

1// GitHub: https://github.com/CocoaLumberjack/CocoaLumberjack
2// 特点:
3 高性能日志记录
4 多日志级别(Error, Warn, Info, Debug, Verbose
5 多种输出目标(Console, File, Database
6 日志轮转和清理
7 支持SwiftObjective-C
8
9// 集成:
10pod 'CocoaLumberjack/Swift'
11
12// 配置:
13import CocoaLumberjackSwift
14
15// 控制台日志
16DDLog.add(DDOSLogger.sharedInstance)
17
18// 文件日志
19let fileLogger = DDFileLogger()
20fileLogger.rollingFrequency = 60 * 60 * 24 // 24小时
21fileLogger.logFileManager.maximumNumberOfLogFiles = 7
22DDLog.add(fileLogger)
23
24// 使用:
25DDLogError("错误信息")
26DDLogWarn("警告信息")
27DDLogInfo("普通信息")
28DDLogDebug("调试信息")
29DDLogVerbose("详细信息")
30
31// 上下文过滤:
32let context = 123
33DDLogDebug("带上下文的消息", context: context)
34

2. SwiftyBeaver - Swift专用日志框架

1// GitHub: https://github.com/SwiftyBeaver/SwiftyBeaver
2// 特点:
3 Swift实现
4 彩色控制台输出
5 多种目的地(Console, File, Cloud
6 平台同步(macOS App
7 支持emoji和格式化
8
9// 使用:
10import SwiftyBeaver
11let log = SwiftyBeaver.self
12
13// 添加控制台目的地
14let console = ConsoleDestination()
15console.format = "$DHH:mm:ss$d $L $M"
16log.addDestination(console)
17
18// 添加文件目的地
19let file = FileDestination()
20file.logFileURL = URL(fileURLWithPath: "/path/to/file.log")
21log.addDestination(file)
22
23// 日志级别:
24log.verbose("详细")    // 灰色
25log.debug("调试")      // 绿色
26log.info("信息")       // 蓝色
27log.warning("警告")    // 黄色
28log.error("错误")      // 红色
29

3. XCGLogger - 功能丰富的日志框架

1// GitHub: https://github.com/DaveWoodCom/XCGLogger
2// 特点:
3 高度可配置
4 支持日志过滤
5 自定义日志目的地
6 自动日志轮转
7 详细的文档
8
9// 使用:
10import XCGLogger
11
12let log = XCGLogger.default
13
14// 配置
15log.setup(level: .debug,
16          showLogIdentifier: false,
17          showFunctionName: true,
18          showThreadName: true,
19          showLevel: true,
20          showFileNames: true,
21          showLineNumbers: true,
22          showDate: true)
23
24// 自定义过滤器
25log.filters = [
26    Filter.Level(from: .debug),  // 只显示.debug及以上
27    Filter.Path(include: ["ViewController"], exclude: ["ThirdParty"])
28]
29
30log.debug("调试信息")
31log.error("错误信息")
32

七、自动化调试工具

1. Fastlane - 自动化工具集

1# 官网: https://fastlane.tools
2# 特点:
3 自动化构建、测试、部署
4 丰富的插件生态
5 CI/CD深度集成
6 跨平台支持
7
8# 常用命令:
9fastlane screenshots    # 自动截图
10fastlane beta          # 发布测试版
11fastlane release       # 发布正式版
12fastlane match         # 证书管理
13
14# 集成调试功能:
15lane :debug_build do
16  # 1. 设置调试配置
17  update_app_identifier(
18    app_identifier: "com.company.debug"
19  )
20  
21  # 2. 启用调试功能
22  update_info_plist(
23    plist_path: "Info.plist",
24    block: proc do |plist|
25      plist["FLEXEnabled"] = true
26      plist["NSAllowsArbitraryLoads"] = true
27    end
28  )
29  
30  # 3. 构建
31  gym(
32    scheme: "Debug",
33    export_method: "development"
34  )
35end
36

2. slather - 代码覆盖率工具

1# GitHub: https://github.com/SlatherOrg/slather
2# 特点:
3 生成代码覆盖率报告
4 支持多种输出格式(html, cobertura, json)
5 与CI集成
6 过滤第三方库代码
7
8# 安装:
9gem install slather
10
11# 使用:
12# 1. 运行测试并收集覆盖率
13xcodebuild test -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 14' -enableCodeCoverage YES
14
15# 2. 生成报告
16slather coverage --html --show --scheme MyApp MyApp.xcodeproj
17
18# 3. 在Jenkins中集成
19slather coverage --input-format profdata --cobertura-xml --output-directory build/reports MyApp.xcodeproj
20

八、特殊场景调试工具

1. SparkInspector - 实时对象监控

1// 官网: https://sparkinspector.com
2// 特点:
3 实时监控所有对象实例
4 查看对象属性变化
5 方法调用追踪
6 内存泄漏检测
7
8// 集成:
9// 1. 下载Spark Inspector应用
10// 2. 集成框架到项目
11// 3. 通过Spark Inspector连接调试
12
13// 适用场景:
14 复杂的对象关系调试
15 观察模式数据流
16 内存泄漏定位
17

3. LLDB - 底层调试神器

1# Xcode内置,但功能极其强大
2# 常用命令:
3
4# 1. 查看变量
5(lldb) po variable
6(lldb) p variable
7(lldb) v variable
8
9# 2. 修改变量
10(lldb) expr variable = newValue
11
12# 3. 调用方法
13(lldb) expr [self doSomething]
14(lldb) expr self.doSomething()
15
16# 4. 断点命令
17(lldb) breakpoint set -n "[ClassName methodName]"
18(lldb) breakpoint command add 1  # 为断点1添加命令
19> po $arg1
20> continue
21> DONE
22
23# 5. 内存查看
24(lldb) memory read 0x12345678
25(lldb) memory write 0x12345678 0x42
26
27# 6. 自定义LLDB命令
28(lldb) command regex rlook 's/(.+)/image lookup -rn %1/'
29(lldb) rlook methodName
30
31# 7. Swift特定命令
32(lldb) frame variable -L  # 显示局部变量
33(lldb) type lookup String # 查看类型信息
34

九、工具矩阵

需求场景推荐工具理由
日常开发调试FLEX + Proxyman功能全面,无需额外环境
UI/布局问题Lookin + Reveal3D视图,实时修改
性能优化Xcode Instruments + Tracy官方工具+线上监控
内存泄漏MLeaksFinder + FBRetainCycleDetector自动检测+深度分析
网络调试Proxyman/Charles功能专业,操作友好
日志管理CocoaLumberjack + SwiftyBeaver功能强大+美观输出
自动化Fastlane + slather流程自动化+质量监控
底层调试LLDB + InjectionIII深度控制+热重载

团队规范建议

1# iOS团队调试工具规范
2
3## 必装工具(所有开发者)
41. Proxyman/Charles - 网络调试
52. Lookin - UI调试  
63. InjectionIII - 热重载
7
8## 项目集成(Podfile)
9```ruby
10target 'MyApp' do
11  # 调试工具(仅Debug)
12  pod 'FLEX', :configurations => ['Debug']
13  pod 'CocoaLumberjack', :configurations => ['Debug']
14  pod 'MLeaksFinder', :configurations => ['Debug']
15end
16

总结

核心建议:

  1. 不要过度依赖单一工具 - 不同工具有不同适用场景
  2. 掌握核心原理 - 理解工具背后的工作原理比单纯使用更重要
  3. 建立个人调试工具箱 - 根据习惯组合适合自己的工具集
  4. 关注新工具发展 - iOS开发工具生态在持续进化
  5. 重视自动化 - 将重复调试工作自动化,提高效率

终极目标: 快速定位问题 → 深入分析原因 → 有效解决问题

这些工具大多数都有免费版本或开源版本,建议从最常用的几个开始,逐步建立自己的调试能力体系。

掌握这些工具,不是为了炫耀技术,而是为了让你的代码更健壮,让你的用户更满意,让你自己在深夜加班时少掉几根头发。


iOS 常用调试工具大全-打造你的调试武器库》 是转载文章,点击查看原文


相关推荐


SpringCloud Gateway 集成 Sentinel 详解 及实现动态监听Nacos规则配置实时更新流控规则
普通网友2026/1/15

目录 一、前言二、版本选择和适配 2.1、本文使用各组件版本2.2、官方推荐版本 三、部署sentinel-dashboard 3.1、下载 sentinel-dashboard jar包3.2、启动 sentinel-dashboard 四、Gateway 集成 Sentinel实现控制台配置流控规则测试 4.1、添加Gateway 集成 Sentinel 包4.2、添加 Gateway 服务启动JVM参数 4.2.1、配置说明4.2.2、


一文讲清:主流大模型推理部署框架:vLLM、SGLang、TensorRT-LLM、ollama、XInference
智泊AI2026/1/7

本文系统性梳理当前主流的大模型推理部署框架,包括vLLM、SGLang、TensorRT-LLM、Ollama、XInference等。 随着大语言模型技术的迅猛演进,推理部署框架作为贯通模型能力与落地应用的核心枢纽,其战略价值正持续攀升。本文旨在对当前业界广泛采用的 vLLM、SGLang、TensorRT-LLM、Ollama 与 XInference 等主流推理框架展开系统性归纳,围绕核心技术路径、系统架构设计、关键性能指标及典型适用场景等多维度进行深度剖析,为大模型在生产环境中的选型决策


HarmonyOS官方模板集成创新活动-流蓝卡片
万少 VIP.5 如鱼得水2025/12/30

HarmonyOS官方模板集成创新活动-流蓝卡片 ​ 介绍 ​ ​ 流蓝卡片是一款适配了的鸿蒙6-API20的HarmonyOS应用,目的在于给用户提供方便、简单的方式创建好看的卡片,用于将卡片发布到各种社交平台上。 实现过程 ​ ​ 目前是AI Codeing的时代,流蓝卡片其实也是基于AI Coding的产物,人工参与代码部分不超过5%。 ​ 这款应用用到的亮点技术有:GLM4.6 + Gemini-3-pro + 智谱图片生成 + command line 构建鸿蒙工程。 ​ 这套技术组


应对企业微信客户端频繁更新的 RPA 兼容性方案
天空属于哈夫克32025/12/20

一、 引言(Introduction) 核心痛点: 企业微信几乎每月都会进行版本迭代。UI 布局的微调、控件名称的修改、甚至弹窗逻辑的变化,都会导致原本稳定的 RPA 脚本瞬间失效。 研发挑战: 开发者无法阻止客户端更新,但可以通过架构设计,让脚本具备“韧性”,减少因版本更新带来的重复开发工作。 本文目的: 分享如何构建一套版本感知与解耦的 RPA 框架,实现“一次编写,多版本适配”。 二、 兼容性问题的常见类型 UI 属性变更: 某个按钮的 Name 从“发送”变成了“确认发送


AI+虚仿破解实训难题,为无人机火灾救援教学增效赋能
恒点虚拟仿真2025/12/12

在职业教育深化改革的浪潮中,人工智能与虚拟仿真技术的融合正为专业教学带来革命性变化。充分响应政策号召,无人机火灾救援“AI+虚仿”虚实融合创新实训室,为培养高素质应急救援技术技能人才提供全新解决方案。 传统培养模式痛点:实训难实现、教学低效率 传统无人机火灾救援实训长期面临高危场景难复现、设备成本高昂、教学评价主观性强等痛点。尤其在教学管理层面,教师往往需要投入大量时间进行课前准备、课中指导与课后评估,难以实现规模化、精准化人才培养。 智能教学新范式:AI数字教师实现个性化精准指导 实训


Trae Genimi3跟着官网学实时通信 Socket.io框架
百万前端向前冲2025/12/4

socket.io/zh-CN/docs/… 第1次对话:AI满意度⭐️⭐️ AI提示词:学习socket.io 请你按照这个文档 socket.io/docs/v4/tut… 创建一个中文网站,循序渐进的学习。 出现这个基于Node.js的Expressv5.2框架的聊天室,有点弱了,用户进入没有提示和昵称, 我的对AI表现的满意度是 ⭐️⭐️⭐️🈳🈳,可以给半⭐️给 版本比较新。 我需要的是一个学习Socekt.io的网站 AI给我一个Socekt.io开发的项目。 第2次对话:

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客