查找有关崩溃的信息
当你的应用程序崩溃时,Xcode 将进入调试器并向你显示有关崩溃的更多信息:
最重要的部分是:
红色箭头
红色箭头显示代码行崩溃以及崩溃的原因。
调试器控制台
许多崩溃会将更多信息记录到调试器控制台。它应该在应用程序崩溃时自动显示,但如果不存在,请通过选择 Xcode 右上角的按钮显示调试器,并通过单击 调试器右下角的按钮显示控制台。
堆栈跟踪
堆栈跟踪列出了程序在到达崩溃的代码之前的功能。
堆栈跟踪的一部分显示在屏幕左侧的 Debug Navigator 中,调试器控件允许你选择要在调试器中查看的堆栈帧:
如果在调试器的 (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