常规的开发调试是在 Xcode 中直接运行程序然后通过断点进行调试,这通常可以满足大部分的情况。
但是对于只能以被动方式拉起运行的场景,上面的方式就无法使用了。
比如以下场景:
- 调试在 App 未启动的情况下,点击系统通知拉起 App 的流程。
- 调试在 App 未启动的情况下,接受来自第三方 App 的文件分享的流程(比如来自系统的 AirDrop)。
- 调试网络扩展(NetworkExtension)的运行流程。
App 是被系统拉起运行的,不能在 Xcode 里先运行起来再调试,这个时候需要使用以下步骤来调试被动执行的程序,而且对 iOS 和 macOS 都适用。
先在 Xcode 中要调试的位置下好断点:
然后设置要调试的程序名称,如果是扩展类型就是输入扩展的名称:
设置好名称后状态就变成 Waiting to attach to XXX:
所有设置完成。
这个时候就可以开始调试了,当程序被动启动而且执行到下了断点的位置,就会自动暂停到 Xcode 里。
掌握了这个技巧以后,可以解决开发中大部分的疑难问题。
(完)