如何调试iOS应用程序扩展? [重复]

问题描述 投票:0回答:4

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

Xcode 9 可以吗?

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

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

ios swift ios-app-extension ios-extensions ios-app-group
4个回答
9
投票

知道:

  • 在任何给定时间您只能调试 1 个目标
  • 目标必须正在运行并附加到 Xcode 的调试器
  • 应用程序扩展是与其包含的应用程序(目标)分开的目标

解决方案:

转到 Xcode >> 调试 >> 附加到进程 >> 然后只需选择您的 appExtension 目标

注:

如果您尝试调试由操作系统触发的扩展,那么您需要做一些事情以便操作系统触发它。只有这样您才能将其附加到调试器。示例:如果您尝试调试“通知服务扩展”,那么您只能在将 iPhone 连接到 Mac 并发送推送通知以打开服务扩展之后,才能在目标列表中看到它. FWIW 我还遇到了奇怪的问题,运行应用程序时会在启动时崩溃。修复方法是将 appex 从调试器中分离并启动正常应用程序,然后再次附加 appex。

相信
如果你也使用

os.log它也只会登录到控制台,但我对此并不是100%肯定。


我找到了一种方法,它并不完美,但至少我可以看到我现在打印的内容。 我使用了 os_log("这就是我将看到的") 函数(你必须导入 os)

5
投票
1-我在我的扩展方案中设置了一个环境变量 OS_ACTIVITY_MODE = 默认(不是禁用)

2-我在我的设备中运行构建我的应用程序

3-我将扩展附加到进程(我的应用程序)

4-您可以在控制台应用程序中查看日志(打开/Applications/Utilities/Console.app)或打开Windows -> 设备和模拟器以查看您的设备控制台。

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

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

2
投票
从应用程序启动扩展程序后,控制台会清除,您会看到使用

NSLog

print

 打印的任何内容。 
NSLog
 消息也应该出现在设备日志中,但很难检测到。
我建议使用
QorumLogs

,它为您提供结构化且彩色的日志输出,这样您就不会错过任何消息。

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

0
投票

© www.soinside.com 2019 - 2024. All rights reserved.