如何诊断 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) 崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

如何在纵向模式下支持 iPad 的 180 度变体?

应用程序在所有 iphone 和 ipad 型号中的外观如何相同

如何在运行仅 iPhone 应用程序(非通用)的 iPad 上支持 UIPickerView 中的 VoiceOver?

如何在 UIPickerView 上添加 UIToolbar? (iPhone/iPad)

如何使存储在文档目录中的 plist 在 iPhone 和 iPad 之间为通用应用程序同步?

如何防止我的 iPhone 应用程序在 iPad 上下载? [复制]