我的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
它将返回文件和行所在的位置.它有点用处.
只是为了概括@ seppo0010的答案并在2011年更新它:
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)
请确保更改-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
从终端.)
归档时间: |
|
查看次数: |
3846 次 |
最近记录: |