繁体   English   中英

如何调试 iOS 应用扩展?

[英]How to debug an iOS app extension?

我正在尝试调试 iOS 应用程序扩展,我所能做的就是设置断点,但能够打印到控制台会很好。

这可以用 Xcode 9 实现吗?

或者至少在某个地方阅读它,也许是一个文件?

我在“设备和模拟器”中查看了我的设备日志,但找不到我从 iOS 应用程序扩展中打印的内容。

知道:

  • 在任何给定时间,您只能调试 1 个目标
  • 目标必须附加到 Xcode 的调试器
  • App Extension 是与其包含的应用程序(目标)不同的目标

解决方法:

转到 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 -> 设备和模拟器中查看您的日志以查看您的设备控制台。

控制台应用程序选项是最好的。

您可以像调试任何其他应用程序一样调试应用程序扩展程序,只需选择目标和设备然后运行扩展程序即可。 您需要在打开的对话框中选择一个应用程序与扩展程序一起运行。

从应用程序启动扩展后,控制台会清除,您会看到使用NSLogprint任何内容。 NSLog消息也应该出现在设备日志中,但很难检测到。

我建议使用QorumLogs ,它为您提供结构化和彩色的日志输出,因此您不会错过任何消息。

您可以使用“占位符”变量来打印一些调试消息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM