调试 iOS 应用程序:在 Xcode 下崩溃,但继续处理 iPhone

Debugging iOS application: crash under Xcode but keep working on iPhone

我正在尝试使用 Xcode 在 iPhone 上调试我的 iOS 应用程序。

我正在通过 Xcode 调试器启动应用程序,应用程序可以正常工作几分钟。然后我收到来自 Xcode:

的错误消息
The app "myapp" on "iPhone_device" quit unexpectedly.
Message from debugger: Terminated due to signal 9

但是 iPhone 上的应用程序一直正常运行,就像什么都没发生一样。

这正常吗?这种 Xcode 行为的可能原因是什么?

更新: 我的应用程序是在后台运行的 VoIP 应用程序。我刚刚发现这种应用程序可以在崩溃后在后台自动启动。这可能是个问题吗?

这意味着您的应用正在使用大量内存,因此该应用已被终止。检查内存泄漏。

您的应用很可能因内存不足而被终止。 最好的方法是使用 Xcode 的管理器查看设备控制台:

如果 iOS 运行 内存不足并终止您的应用程序,您应该会看到如下内容:

The app "myapp" on "iPhone_device" quit unexpectedly.
Message from debugger: Terminated due to signal 9

您应该使用 Instruments 中的 Activity 监视器来查看您的应用程序使用了多少内存。

您还可以使用内存监视器工具并启用“可用物理内存”的图形。如果您在崩溃前看到图表接近 0,则可以确定这是内存问题。

当我连接 iPhone 6 时,我在 iPhone 5s 上尝试 运行 一个应用程序时遇到了同样的错误。我所要做的就是断开 iPhone 6 并且它在之后工作。

在 iOS,应用程序可以似乎 保持 运行。当您将应用程序置于后台时,当设备内存不足时,它可能会被 iOS 杀死。使用模拟器不太可能在您的 Mac 上发生。如果您返回该应用程序,它将重新启动并转到您离开它的确切位置。用户没有注意到它在中间被杀死了。