如何调试EXC_CRASH(SIGTRAP)

7

我的应用程序运行良好,直到我从后台恢复或没有启用定位服务时,应用程序将崩溃。

崩溃日志显示异常类型:EXC_CRASH(SIGTRAP)

有人知道如何调试它吗?

Exception Type:  EXC_CRASH (SIGTRAP)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x36398848 __kill + 8
1   FrogFinder                      0x000b5034 0x69000 + 311348
2   CoreFoundation                  0x3447e980 __handleUncaughtException + 68
3   libobjc.A.dylib                 0x346ce2ca _objc_terminate + 122
4   libc++abi.dylib                 0x338a33be _ZL19safe_handler_callerPFvvE + 70
5   libc++abi.dylib                 0x338a344a std::terminate() + 14
6   libc++abi.dylib                 0x338a481e __cxa_rethrow + 82
7   libobjc.A.dylib                 0x346ce22e objc_exception_rethrow + 6
8   CoreFoundation                  0x343d453e CFRunLoopRunSpecific + 398
9   CoreFoundation                  0x343d439e CFRunLoopRunInMode + 98
10  GraphicsServices                0x30c58fc6 GSEventRunModal + 150
11  UIKit                           0x3785573c UIApplicationMain + 1084
12  FrogFinder                      0x0006a7e6 0x69000 + 6118
13  FrogFinder                      0x0006a7a4 0x69000 + 6052

Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0   libsystem_kernel.dylib          0x363893b4 kevent + 24
1   libdispatch.dylib               0x370b3e78 _dispatch_mgr_invoke + 708
2   libdispatch.dylib               0x370b3b96 _dispatch_mgr_thread + 30

Thread 2 name:  WebThread
Thread 2:
0   libsystem_kernel.dylib          0x36389010 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x36389206 mach_msg + 50
2   CoreFoundation                  0x3445241c __CFRunLoopServiceMachPort + 120
3   CoreFoundation                  0x34451154 __CFRunLoopRun + 876
4   CoreFoundation                  0x343d44d6 CFRunLoopRunSpecific + 294
5   CoreFoundation                  0x343d439e CFRunLoopRunInMode + 98
6   WebCore                         0x368a8128 _ZL12RunWebThreadPv + 396
7   libsystem_c.dylib               0x33224c16 _pthread_start + 314
8   libsystem_c.dylib               0x33224ad0 thread_start + 0

Thread 3 name:  com.apple.NSURLConnectionLoader
Thread 3:
0   libsystem_kernel.dylib          0x36389010 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x36389206 mach_msg + 50
2   CoreFoundation                  0x3445241c __CFRunLoopServiceMachPort + 120
3   CoreFoundation                  0x34451154 __CFRunLoopRun + 876
4   CoreFoundation                  0x343d44d6 CFRunLoopRunSpecific + 294
5   CoreFoundation                  0x343d439e CFRunLoopRunInMode + 98
6   Foundation                      0x35dd4bc2 +[NSURLConnection(Loader) _resourceLoadLoop:] + 302
7   Foundation                      0x35dd4a8a -[NSThread main] + 66
8   Foundation                      0x35e6859a __NSThread__main__ + 1042
9   libsystem_c.dylib               0x33224c16 _pthread_start + 314
10  libsystem_c.dylib               0x33224ad0 thread_start + 0

Thread 4:
0   libsystem_kernel.dylib          0x36389010 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x36389206 mach_msg + 50
2   CoreFoundation                  0x3445241c __CFRunLoopServiceMachPort + 120
3   CoreFoundation                  0x34451154 __CFRunLoopRun + 876
4   CoreFoundation                  0x343d44d6 CFRunLoopRunSpecific + 294
5   CoreFoundation                  0x343d439e CFRunLoopRunInMode + 98
6   Foundation                      0x35dc8b7e -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 250
7   Foundation                      0x35de252c -[NSRunLoop(NSRunLoop) run] + 72
8   FrogFinder                      0x000c8da6 0x69000 + 392614
9   Foundation                      0x35dd4a8a -[NSThread main] + 66
10  Foundation                      0x35e6859a __NSThread__main__ + 1042
11  libsystem_c.dylib               0x33224c16 _pthread_start + 314
12  libsystem_c.dylib               0x33224ad0 thread_start + 0

Thread 5 name:  NetworkIO
Thread 5:
0   libsystem_kernel.dylib          0x36389010 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x36389206 mach_msg + 50
2   CoreFoundation                  0x3445241c __CFRunLoopServiceMachPort + 120
3   CoreFoundation                  0x34451154 __CFRunLoopRun + 876
4   CoreFoundation                  0x343d44d6 CFRunLoopRunSpecific + 294
5   CoreFoundation                  0x343d439e CFRunLoopRunInMode + 98
6   MapKit                          0x38030412 0x38022000 + 58386
7   Foundation                      0x35dd4a8a -[NSThread main] + 66
8   Foundation                      0x35e6859a __NSThread__main__ + 1042
9   libsystem_c.dylib               0x33224c16 _pthread_start + 314
10  libsystem_c.dylib               0x33224ad0 thread_start + 0

我认为你需要对这一行进行符号化:1 FrogFinder 0x000b5034 0x69000 + 311348,以获取崩溃方法的名称。你可以在这里找到有关符号化的信息:https://dev59.com/43M_5IYBdhLWcg3wQQld - Johnmph
你最终找出了是什么导致了这个崩溃吗? - jasongregori
1
你解决了这个问题吗?如果是的,我很想知道问题的原因。这是一个不寻常的错误。 - SAHM
3个回答

23

您还可以打开异常断点。在 XCode 4 中,单击您的项目并选择断点选项卡。在该选项卡的底部是 | + | - | 搜索栏。选择 + 项并“添加异常断点”。您可以将其保留为“所有”或选择“Objective-C”。这样,您就可以在调试器中中断,并能够查看引起异常的原因。


9

在Xcode 4.2和iOS 5中,未捕获的异常似乎不再显示在控制台中。我建议添加以下内容或修改现有的未捕获异常处理程序,以便为您转储异常调用堆栈。

#ifdef DEBUG
void eHandler(NSException *);

void eHandler(NSException *exception) {
    NSLog(@"%@", exception);
    NSLog(@"%@", [exception callStackSymbols]);
}
#endif

int main(int argc, char *argv[]) {

#ifdef DEBUG
    NSSetUncaughtExceptionHandler(&eHandler);
#endif

...rest of your main function here...

}

0
在开发过程中发生此类崩溃的最简单方法是添加异常断点。 您可以像下面这样添加异常断点
  1. 在XCode左侧菜单中选择断点选项

Select the break points option in left menu

将异常断点添加到代码中。

enter image description here

为所有异常添加断点

enter image description here

  1. 运行应用程序。在大多数情况下,当异常发生时,XCode会停止执行并显示导致异常的代码行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接