如何诊断 iPad iPhone 应用程序中的 EXC_BREAKPOINT (SIGTRAP) 崩溃?
Posted
技术标签:
【中文标题】如何诊断 iPad iPhone 应用程序中的 EXC_BREAKPOINT (SIGTRAP) 崩溃?【英文标题】:How to diagnose EXC_BREAKPOINT (SIGTRAP) crash in iPad iPhone app? 【发布时间】:2011-04-24 20:54:05 【问题描述】:我遇到了一个(至少对我而言)非特定的 iPad 应用程序崩溃。这是一个异常类型:EXC_BREAKPOINT。我正在考虑双重内存释放或尝试访问已释放的变量,但我希望有人能在我搜索代码时提供更多信息。完整的崩溃日志是:
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x00000102, 0x31ccebd0
Crashed Thread: 0
Thread 0 Crashed:
0 CoreFoundation 0x0000ab96 CFRelease + 90
1 CoreFoundation 0x0005209e __CFRunLoopTimerDeallocate + 18
2 CoreFoundation 0x0000ac68 _CFRelease + 160
3 CoreFoundation 0x0000ab8e CFRelease + 82
4 CoreFoundation 0x00019130 __CFTypeCollectionRelease + 8
5 CoreFoundation 0x00019962 __CFArrayReleaseValues + 302
6 CoreFoundation 0x0001982c __CFArrayDeallocate + 8
7 CoreFoundation 0x0000ac68 _CFRelease + 160
8 CoreFoundation 0x0000ab8e CFRelease + 82
9 CoreFoundation 0x000279c4 __CFRunLoopRun + 1092
10 CoreFoundation 0x0002748c CFRunLoopRunSpecific + 224
11 CoreFoundation 0x00027394 CFRunLoopRunInMode + 52
12 GraphicsServices 0x000044a4 GSEventRunModal + 108
13 GraphicsServices 0x00004550 GSEventRun + 56
14 UIKit 0x000374ce -[UIApplication _run] + 406
15 UIKit 0x00035148 UIApplicationMain + 664
16 MultipleDetailViews 0x00002ccc main (main.m:55)
17 MultipleDetailViews 0x00002c80 start + 32
Thread 1:
0 libSystem.B.dylib 0x0002d974 kevent + 24
1 libSystem.B.dylib 0x000d7704 _dispatch_mgr_invoke + 88
2 libSystem.B.dylib 0x000d7174 _dispatch_queue_invoke + 96
3 libSystem.B.dylib 0x000d6b98 _dispatch_worker_thread2 + 120
4 libSystem.B.dylib 0x0007b24a _pthread_wqthread + 258
5 libSystem.B.dylib 0x00073970 start_wqthread + 0
Thread 2:
0 libSystem.B.dylib 0x00001268 mach_msg_trap + 20
1 libSystem.B.dylib 0x00003354 mach_msg + 44
2 CoreFoundation 0x00027e54 __CFRunLoopServiceMachPort + 88
3 CoreFoundation 0x000276de __CFRunLoopRun + 350
4 CoreFoundation 0x0002748c CFRunLoopRunSpecific + 224
5 CoreFoundation 0x00027394 CFRunLoopRunInMode + 52
6 WebCore 0x000060c8 RunWebThread(void*) + 332
7 libSystem.B.dylib 0x0007a886 _pthread_start + 242
8 libSystem.B.dylib 0x0006fa88 thread_start + 0
Thread 3:
0 libSystem.B.dylib 0x00001268 mach_msg_trap + 20
1 libSystem.B.dylib 0x00003354 mach_msg + 44
2 CoreFoundation 0x00027e54 __CFRunLoopServiceMachPort + 88
3 CoreFoundation 0x000276de __CFRunLoopRun + 350
4 CoreFoundation 0x0002748c CFRunLoopRunSpecific + 224
5 CoreFoundation 0x00027394 CFRunLoopRunInMode + 52
6 Foundation 0x0002d5f6 +[NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:] + 206
7 Foundation 0x0000b192 -[NSThread main] + 38
8 Foundation 0x00004242 __NSThread__main__ + 966
9 libSystem.B.dylib 0x0007a886 _pthread_start + 242
10 libSystem.B.dylib 0x0006fa88 thread_start + 0
Thread 4:
0 libSystem.B.dylib 0x0002568c select$DARWIN_EXTSN + 20
1 CoreFoundation 0x0005ee72 __CFSocketManager + 582
2 libSystem.B.dylib 0x0007a886 _pthread_start + 242
3 libSystem.B.dylib 0x0006fa88 thread_start + 0
Thread 0 crashed with ARM Thread State:
r0: 0x00000000 r1: 0x2fdff994 r2: 0x3e56e898 r3: 0x00000118
r4: 0x00000000 r5: 0x001eb094 r6: 0x0000002c r7: 0x2fdfec04
r8: 0x001eb090 r9: 0x001fc098 r10: 0x00000000 r11: 0x00000000
ip: 0x3e58f038 sp: 0x2fdfebfc lr: 0x31d160a5 pc: 0x31cceb96
cpsr: 0x600f0030
【问题讨论】:
您是否尝试过“全部清除”并从头开始重建?我发现很多这些神秘的崩溃发生是因为构建系统没有在应该重建的时候重建东西。您可能还想删除您的构建目录并从头开始重建以确保。 您是否将 NSZombeEnabled 设置为 YES?启用它,运行静态分析器并使用断点单步执行您的代码。这肯定会更清楚地说明情况。这样做,并在此处发布更新。有了这些信息,也许我们可以解决这个问题...... 【参考方案1】:我也遇到了这个错误并修复了它。这个人很可能正在运行 OS3,而您正在使用 OS4 中的代码块,您需要在库上设置一个弱链接,以便它可以正确加载。在 LLVM -weak_library /usr/lib/libSystem.B.dylib 的构建设置中
【讨论】:
以上是关于如何诊断 iPad iPhone 应用程序中的 EXC_BREAKPOINT (SIGTRAP) 崩溃?的主要内容,如果未能解决你的问题,请参考以下文章
应用程序在所有 iphone 和 ipad 型号中的外观如何相同
如何在运行仅 iPhone 应用程序(非通用)的 iPad 上支持 UIPickerView 中的 VoiceOver?
如何在 UIPickerView 上添加 UIToolbar? (iPhone/iPad)