【问题标题】:iPhone app crashes when launched from Xcode, but not from iPhoneiPhone 应用程序在从 Xcode 启动时崩溃,但不是从 iPhone 启动
【发布时间】:2011-03-14 06:27:01
【问题描述】:

我有一个应用程序在 iPhone 上崩溃,但只有当它通过 Xcode 启动时才崩溃。

我可以在 iPhone 控制台日志中看到该应用收到了内存警告,然后出现了一些奇怪的事件,例如:

Sun Jul 11 00:03:43 Matts-iPhone com.apple.launchd[1] (UIKitApplication:com.mycom.myapp[0x3f60][5591]) <Notice>: (UIKitApplication:com.mycom.myapp[0x3f60]) Bug: launchd_core_logic.c:3270 (24132):0
Sun Jul 11 00:03:43 Matts-iPhone com.apple.debugserver-48[5590] <Warning>: 1 [15d6/1403]: error: ::read ( 6, 0x3809f4, 1024 ) => -1 err = Bad file descriptor (0x00000009)
Sun Jul 11 00:03:43 Matts-iPhone com.apple.launchd[1] (UIKitApplication:com.mycom.myapp[0x3f60][5591]) <Notice>: (UIKitApplication:com.mycom.myapp[0x3f60]) Bug: launchd_core_logic.c:2688 (24132):10
Sun Jul 11 00:03:43 Matts-iPhone com.apple.launchd[1] (UIKitApplication:com.mycom.myapp[0x3f60][5591]) <Notice>: (UIKitApplication:com.mycom.myapp[0x3f60]) Working around 5020256. Assuming the job crashed.
Sun Jul 11 00:03:43 Matts-iPhone com.apple.launchd[1] (UIKitApplication:com.mycom.myapp[0x3f60][5591]) <Warning>: (UIKitApplication:com.mycom.myapp[0x3f60]) Job appears to have crashed: Segmentation fault
Sun Jul 11 00:03:43 Matts-iPhone SpringBoard[40] <Warning>: Application 'Phone' exited abnormally with signal 9: Killed
Sun Jul 11 00:03:45 Matts-iPhone SpringBoard[40] <Warning>: Application 'myapp' exited abnormally with signal 11: Segmentation fault

但是,当我从手机(而不是通过 Xcode)启动应用程序时,它会按预期工作。 (启动过程中出现内存警告。我知道它运行紧张,但它会恢复并且不会崩溃)。

这使得调试其他问题变得特别困难。

我是否偶然发现了一些 iOS 错误?

有什么想法吗?

【问题讨论】:

    标签: iphone xcode memory crash launchd


    【解决方案1】:

    在我的情况下,我忘记了我仍然设置了“NSZombiesEnabled”环境变量,这在从 Xcode 启动时增加了实际内存使用量(导致崩溃)。当直接从 Springboard 启动时,没有设置该环境变量,并且应用程序使用的内存要少得多。

    它对于调试非常有用......直到你用完内存并忘记它的存在:)

    【讨论】:

      【解决方案2】:

      这发生在我身上,也是由于设置了 NSZombiesEnabled。就我而言,它被设置在一个我忘记存在的 ~/.gdbinit 文件中。在 Xcode 中,NSZombieEnabled 复选框处于关闭状态,并且该方案的环境变量中没有设置任何内容,因此试图找出问题让我发疯。这个故事的寓意是确保它没有在 .gdbinit 和 XCode 中设置。

      【讨论】:

        【解决方案3】:

        我也遇到了这个问题,这是由于从 Cydia 安装了 Resupported 4 造成的。删除后,我的应用完美启动。

        【讨论】:

        • 我的问题是来自 cydia 的 uididfaker 和 locationholic,卸载它们后 xcode 在我的 iPhone 上运行就好了。
        【解决方案4】:

        通常,当您在模拟器上看到崩溃但在设备上没有崩溃时,反之亦然,这表明为一个硬件编译的库出现故障,而不是为另一个硬件编译。

        但是,如果您的内存很紧,那么您可能会看到由于为 Intel 编译的代码与为 ARM 编译的代码之间的细微差别而导致的崩溃。出于某种原因,英特尔代码可能更敏感。如果你让它在内存紧张的情况下运行足够长的时间,同样的问题最终会出现在设备上。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-05-04
          • 2021-01-15
          • 2011-10-30
          • 2011-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多