当设备未连接到Xcode时崩溃应用程序

时间:2009-09-28 03:14:17

标签: iphone crash

我的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

非常感谢

2 个答案:

答案 0 :(得分:10)

您可以随时访问应用程序崩溃的位置。打开build文件夹上的终端并运行以下命令:

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

它将返回文件和行所在的位置。它有点用处。

答案 1 :(得分:6)

只是为了概括@ seppo0010的答案并将其更新为2011年:

<小时/> 首先,在Xcode4中,设备日志(在管理器窗口中找到)将显示崩溃的线程,文件和行号,因此甚至可能不需要。可以按应用程序,类型和日期/时间对崩溃进行排序。典型的崩溃将包括以下内容:

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 > Prefs > 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。)