开发同学应该都遇到过这种情况:模拟器上跑得好好的功能,装到真机上就抽风------定位偏偏、蓝牙连不上、内存曲线不对劲。真机调试的必要性不用多说,麻烦的是环境:签名、安装、断点、性能分析各要一套东西。这篇按调试环节把 iOS 真机调试工具过一遍,每个环节该用什么、怎么搭,一次说清。
安装与运行:第一道门槛
真机调试的第一步是把包装上去。Xcode 里选设备、等编译、跑起来,一步不落,还得先配好签名和开发者账号。 KXApp(快蝎) 把这一步压缩成了"连上 iPhone,点一键构建安装":内置编译工具套装,装完直接运行到真机,不用打开 Xcode、不用手动导出 IPA。改完代码再点一次,新版本很快同步到手机,调试循环短,这个环节的体验是"所见即所得"式的。
断点与调用栈:LLDB 是标准答案
断点调试基本绕不开 LLDB。Xcode 的调试器底层就是它:设置断点、单步、查看变量、表达式求值,崩溃时停在现场看调用栈,定位问题最快。命令行场景(比如 CI 里复现崩溃)可以用 lldb 独立加载符号调试。这一环节工具本身没什么选择空间,问题只在于你要不要为它装整套 Xcode。
性能分析:Instruments 的取舍
性能类问题(CPU 居高不下、内存缓慢上涨、泄漏)靠 Instruments 在真机上测量:时间线里选 CPU/内存/泄漏模板,连上设备跑一遍,数据按函数归因。Instruments 是 Xcode 的一部分,这决定了它的使用前提。如果机器上不打算装 Xcode,性能数据先靠真机自带的开发者选项(比如能耗统计)粗筛,再决定要不要上 Instruments 精确定位。
视图与运行时检查:Reveal 和 FLEX
界面问题有两类常用工具。Reveal 看视图层级:运行时把 App 的视图树展示出来,哪个控件盖住了哪个、约束冲突在哪,一目了然;FLEX 是开源注入库,打包进 App 后在真机上直接检查网络请求、UserDefaults、文件系统,适合线上包临时排查。两个都要求 App 本身配合(Reveal 要装调试库、FLEX 要代码注入),调试周期里临时接一下。
崩溃与日志:Crashlytics 加真机日志
线上崩溃聚合靠 Crashlytics:自动捕获、符号化、按崩溃组聚合,发版后看新崩溃率很方便。本地真机调试时,系统日志和 App 的 NSLog 输出是主要信息源------Xcode 的 Devices 窗口可以看,不用 Xcode 时用命令行工具也能拉出来。崩溃日志拿到手,配合符号文件就能定位到崩溃行。
怎么组合
iOS 真机调试工具按需组合:日常开发用 IDE 闭环(KXApp 这种内置真机调试引擎的,安装、运行、断点都在一个界面里),性能问题单独开 Instruments,界面问题临时上 Reveal/FLEX,线上崩溃交给 Crashlytics。多数场景并不需要每样都装------装什么取决于你卡在哪个环节,以及愿不愿意为其中某一环背上整套 Xcode。KXApp 这类 IDE 的价值,就是让安装、运行、断点这些高频环节不开 Xcode 也能过,剩下低频的专业工具按需补。