【问题标题】:Crashing app when device not connected to Xcode设备未连接到 Xcode 时应用程序崩溃
【发布时间】:2009-09-28 03:14:17
【问题描述】:

我的 iPhone 应用程序遇到了这种奇怪的行为。使用 Xcode 调试时它在设备上运行良好,但是当设备未连接到我的计算机时它在设备上运行时几乎立即崩溃。不用说,我觉得这有点令人不安,因为我不确定如何调试它。

有人对发生了什么或如何调试此类问题有想法吗?

我在重新连接设备时查看了崩溃报告并得到以下信息:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000070
Crashed Thread:  6

Thread 6 Crashed:
0   libobjc.A.dylib                 0x300102ac 0x3000c000 + 17068
1   myapp                            0x000033ba 0x1000 + 9146
2   myapp                           0x0000adc8 0x1000 + 40392
3   Foundation                      0x30553356 0x30501000 + 336726
4   Foundation                      0x305025fe 0x30501000 + 5630
5   libSystem.B.dylib               0x31d6a6ea 0x31d46000 + 149226

控制台日志如下:

Sun Sep 27 19:59:50 unknown ReportCrash[455] <Notice>: Formulating crash report for process myapp[453]
Sun Sep 27 19:59:50 unknown com.apple.launchd[1] <Warning>: (UIKitApplication:com.yourcompany.myapp[0x2fba]) Job appears to have crashed: Bus error
Sun Sep 27 19:59:50 unknown com.apple.mobile.lockdown[14] <Notice>: Could not receive size of message
Sun Sep 27 19:59:50 unknown lockdownd[14] <Error>: (0x834400) handle_connection: Could not receive internal message #2 from myapp Killing connection
Sun Sep 27 19:59:50 unknown SpringBoard[23] <Warning>: Application 'myapp' exited abnormally with signal 10: Bus error

非常感谢

【问题讨论】:

    标签: iphone crash


    【解决方案1】:

    您始终可以到达应用程序崩溃的那一行。在构建文件夹上打开终端并运行以下命令:

    atos -arch armv6 -o myapp.app/myapp 0x000033ba

    它会返回它所在的文件和行。有点用处。

    【讨论】:

      【解决方案2】:

      只是概括@seppo0010 的答案并在 2011 年更新:


      首先,在 Xcode4 中,Device Logs(在 Organizer 窗口中找到)将显示崩溃的线程、文件和行号,因此 atos 甚至可能不是必需的。崩溃可以按应用程序、类型和日期/时间排序。典型的崩溃将包括以下内容:
      Thread 1 name:  Dispatch queue: someQueue
      Thread 1 Crashed:
      0   MyApp   0x00003e14 -[MyAppViewController someMethod:withParam1:andParam2:] (MyAppViewController.m:254)
      


      但如果您决定使用 atos,请注意以下几点:
      • 确保更改 -arch 标志以匹配运行代码的任何架构。所以,对于我的 iPhone 4,我会输入 -arch armv7

      • Xcode 4 将您的构建路径放在不同的位置,因此请务必签入Xcode &gt; Prefs &gt; Locations。实际构建的路径可能如下所示:/Users/OldMcStopher/Library/Developer/Xcode/DerivedData/MyApp-someUglyString/Build/Products/Debug-iphoneos

      • -o 标志正在寻找实际的二进制文件,而不仅仅是 myapp.app 包装器,因此一旦进入 Debug-iphoneos 文件夹(或您的调试 .app 构建所在的任何位置),请将 -o 标志设置为MyApp.app/MyApp,就像正确表述的@seppo0010。

      atos 手册页描述如下:

      atos 命令将数字地址转换为其符号地址 等价物。如果有完整的调试符号信息,对于 .app.dSYM 中的示例,位于 .app 旁边,然后是 atos 的输出 将包括文件名和源行号信息。

      可以在这里找到: http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/atos.1.html

      (或从终端使用man atos。)

      【讨论】:

      • 感谢您指出 Xcode Organizer 中的设备日志!
      猜你喜欢
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多