40

我正在构建一组通知扩展(服务/内容)。我无法连接到 Xcode 调试器,甚至无法退出设备日志或控制台。

有没有办法查看任何类型的输出?

4

9 回答 9

57

更改目标以运行扩展程序

改变目标

然后选择运行并从“选择要运行的应用程序:”窗口中选择您的应用程序。

在此处输入图像描述

于 2016-08-18T21:32:47.813 回答
34

我已经按照布伦丹的回答进行了尝试,但根本不适合我!

我在控制台中遇到错误

Program ended with exit code: 0

然后在谷歌上搜索后,我检查了 这个答案。然而,这对我也不起作用!

然后我再次尝试了与答案中相同的步骤,在停止我当前正在运行的应用程序之后。然后按照相同的步骤。为了清楚起见,我正在编写以下步骤:

运行包含扩展的应用程序后,

1) Set your breakpoint in the extension
2) Select Debug / Attach to Process by PID or name
3) Enter the name of the extension target
4) Trigger the push notification

在第 2 步之前,请确保停止当前正在运行的应用程序。

于 2017-11-14T05:42:09.800 回答
12

这对我来说可以在扩展中的断点处停止并查看扩展日志:

  1. 选择通知扩展方案,而不是主应用方案
  2. 运行应用程序并从列表中选择主应用程序Choose an app to run
  3. 在 Xcode 中停止应用程序在设备上手动终止它;不手动终止它会导致在Message from debugger: Terminated due to signal 9第 6 步之后。 [更新:在设备上手动终止应用程序似乎没有必要,如果它不起作用,请尝试任何一种方式。]
  4. 选择菜单Debug > Attach to Process by PID or Name
  5. 输入正确的扩展名,而不是主应用名
  6. 发送推送通知
于 2018-06-03T22:40:33.757 回答
7

就我而言,上述所有方法都有一些错误。要点,你需要发送一次推送,然后通过调试器连接,然后发送推送到调试。所以,完整列表:

  1. 启动应用程序(不是扩展程序)。

  2. 从 XCode 停止应用程序。

  3. 发送一推。

  4. 通过“通过 PID 或名称附加到进程...”连接到您的扩展进程。

  5. 发送另一个推送。

于 2018-12-06T07:44:57.043 回答
7

通知服务扩展 (NSE) 实际上并不是您应用的一部分,而是一个表示它与您的应用具有不同进程 ID (PID) 的扩展。您可以通过转到“调试”选项卡让 XCode 监听手机上的每个进程,向下滚动到“附加到进程”并查看您的 NSE 是否列在“可能的目标”下。如果它不存在,请尝试将另一个推送通知发送到您的设备并在它出现时附加到它。

在此处输入图像描述

现在在调试导航器中,您可以看到 NES 进程并且您可以成功调试它。

在此处输入图像描述

于 2018-11-27T11:07:07.173 回答
4

如果您已经尝试了上述所有解决方案,但仍然摸不着头脑,想知道为什么没有调用断点点。然后尝试检查deployment target您的extension它应该小于或等于您的设备操作系统。

对我来说,部署目标高于设备操作系统。

于 2019-12-12T11:17:54.573 回答
3

在我的情况下(Xcode 11.1)调试在此步骤之后开始:

  1. 使用主应用程序运行通知扩展目标
  2. 将应用切换到后台
  3. 锁定手机!
  4. 发送推送到设备
于 2019-11-13T06:18:14.430 回答
0

对我有用的唯一方法是查看日志。我使用 xcode 10.1。日志可从窗口 -> 设备和模拟器 -> 选择您的设备 -> 单击“打开控制台”。这样我也可以看到来自扩展的日志。

于 2019-05-16T22:29:49.063 回答
0

不确定这是否会有所帮助,但我们有同一个应用程序的多个版本(alpha、beta 等)。尝试调试时不断收到“无权附加”错误。打开进程列表,我注意到有 2 个进程命名notification-extension,所以 xcode 必须默认为另一个构建中的一个。通过手动选择正确的版本,或从我的手机中删除其他版本,事情又开始工作了。

于 2018-05-08T23:38:22.733 回答