如何调试iOS应用扩展程序?

时间:2018-01-29 17:40:31

标签: ios swift ios-app-extension ios-extensions ios-app-group

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

Xcode 9可以实现吗?

或者至少在某处读过,也许是文件?

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

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

1-我在我的分机方案中设置环境变量OS_ACTIVITY_MODE =默认(不禁用)

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

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

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

控制台应用选项是最佳选择。

答案 2 :(得分:1)

知道:

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

解决方案:

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

注意:

如果您要调试操作系统触发的扩展,则需要做一些事情,以便操作系统触发它。只有这样,您才能将其附加到调试器。示例:如果您要调试“ Notification Service Extension”,则仅在将iPhone连接到Mac并发送推送通知后,在目标中看到它打开服务扩展。

FWIW我还遇到了奇怪的问题,那就是运行该应用程序会在启动时崩溃。解决方法是将appex与调试器分离,然后启动普通应用,然后再次附加appex。


相信,如果您也使用os.log,那么无论如何它也只会登录到控制台,但是我对此并不百分百肯定。

答案 3 :(得分:0)

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