查找有关崩溃的信息

当你的应用程序崩溃时,Xcode 将进入调试器并向你显示有关崩溃的更多信息:

StackOverflow 文档

最重要的部分是:

红色箭头

红色箭头显示代码行崩溃以及崩溃的原因。

调试器控制台

许多崩溃会将更多信息记录到调试器控制台。它应该在应用程序崩溃时自动显示,但如果不存在,请通过选择 StackOverflow 文档 Xcode 右上角的按钮显示调试器,并通过单击 StackOverflow 文档 调试器右下角的按钮显示控制台。

堆栈跟踪

堆栈跟踪列出了程序在到达崩溃的代码之前的功能。

堆栈跟踪的一部分显示在屏幕左侧的 Debug Navigator 中,调试器控件允许你选择要在调试器中查看的堆栈帧:

StackOverflow 文档

如果在调试器的 (lldb) 提示符下输入 bt 命令并按 return,则会获得可以复制和粘贴的堆栈跟踪的文本表示:

(lldb) bt
* thread #1: tid = 0x3aaec5, 0x00007fff91055f06 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x00007fff91055f06 libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x000000010008142d libsystem_pthread.dylib`pthread_kill + 90
    frame #2: 0x00007fff96dc76e7 libsystem_c.dylib`abort + 129
    frame #3: 0x00007fff8973bf81 libc++abi.dylib`abort_message + 257
    frame #4: 0x00007fff89761a47 libc++abi.dylib`default_terminate_handler() + 267
    frame #5: 0x00007fff94f636ae libobjc.A.dylib`_objc_terminate() + 103
    frame #6: 0x00007fff8975f19e libc++abi.dylib`std::__terminate(void (*)()) + 8
    frame #7: 0x00007fff8975ec12 libc++abi.dylib`__cxa_throw + 121
    frame #8: 0x00007fff94f6108c libobjc.A.dylib`objc_exception_throw + 318
    frame #9: 0x00007fff8d067372 CoreFoundation`-[__NSPlaceholderArray initWithObjects:count:] + 290
    frame #10: 0x00007fff8d0eaa1f CoreFoundation`+[NSArray arrayWithObject:] + 47
  * frame #11: 0x0000000100001b54 test`main(argc=1, argv=0x00007fff5fbff808) + 68 at main.m:15
    frame #12: 0x00007fff8bea05ad libdyld.dylib`start + 1
    frame #13: 0x00007fff8bea05ad libdyld.dylib`start + 1