查詢有關崩潰的資訊

當你的應用程式崩潰時,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