[英]How to debug an iOS app extension?
我正在尝试调试 iOS 应用程序扩展,我所能做的就是设置断点,但能够打印到控制台会很好。
这可以用 Xcode 9 实现吗?
或者至少在某个地方阅读它,也许是一个文件?
我在“设备和模拟器”中查看了我的设备日志,但找不到我从 iOS 应用程序扩展中打印的内容。
转到 Xcode >> Debug >> Attach to process >> 然后选择您的 appExtension 目标
如果您尝试调试由操作系统触发的扩展,那么您需要做一些事情以便操作系统触发它。 只有这样,您才能将其附加到调试器。 示例:如果您尝试调试“通知服务扩展”,那么只有在将 iPhone 连接到 Mac 并发送推送通知以打开服务扩展后,您才会在目标列表中看到它。
FWIW 我也遇到了奇怪的问题,运行应用程序会在启动时崩溃。 修复方法是从调试器中分离 appex 并启动普通应用程序,然后再次附加 appex。
我相信,如果您还使用os.log
它也只会登录到控制台,但我对此并不是 100% 肯定。
我找到了一种方法,它并不完美,但至少我可以看到我现在打印的内容。 我使用了 os_log("this is what I will see") 函数(你必须导入 os)
1-我在我的扩展方案中设置了一个环境变量 OS_ACTIVITY_MODE = default(未禁用)
2-我在我的设备中运行构建我的应用程序
3- 我将我的扩展附加到一个进程(我的应用程序)
4- 您可以在控制台应用程序(打开 /Applications/Utilities/Console.app)或打开 Windows -> 设备和模拟器中查看您的日志以查看您的设备控制台。
控制台应用程序选项是最好的。
您可以像调试任何其他应用程序一样调试应用程序扩展程序,只需选择目标和设备然后运行扩展程序即可。 您需要在打开的对话框中选择一个应用程序与扩展程序一起运行。
从应用程序启动扩展后,控制台会清除,您会看到使用NSLog
或print
任何内容。 NSLog
消息也应该出现在设备日志中,但很难检测到。
我建议使用QorumLogs ,它为您提供结构化和彩色的日志输出,因此您不会错过任何消息。
您可以使用“占位符”变量来打印一些调试消息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.