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

3 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
Run Code Online (Sandbox Code Playgroud)

并且控制台日志具有以下内容:

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
Run Code Online (Sandbox Code Playgroud)

非常感谢

小智 10

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

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

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


Old*_*her 6

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


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

Thread 1 name:  Dispatch queue: someQueue
Thread 1 Crashed:
0   MyApp   0x00003e14 -[MyAppViewController someMethod:withParam1:andParam2:] (MyAppViewController.m:254)
Run Code Online (Sandbox Code Playgroud)


但是,如果您决定使用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旁边的.app.dSYM中,则atos的输出将包括文件名和源行号信息.

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

(或man atos从终端.)