我收到以下索引出界失誤:NSRangeException:調用堆棧不顯示行號
*** Terminating app due to uncaught exception 'NSRangeException', reason:
'*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(0x2263052 0x24c7d0a 0x224fdb8 0x2f4a7 0x2264ec9 0x81e299 0x81e306 0x75aa30
0x75ac56 0x741384 0x734aa9 0x39a9fa9 0x22371c5 0x219c022 0x219a90a 0x2199db4
0x2199ccb 0x39a8879 0x39a893e 0x732a9b 0x1e5b 0x1dc5 0x1)
我知道到底是什麼錯誤意味着,但我覺得這些錯誤非常困難的,因爲固定出於某種原因調用堆棧不會告訴我數組被調用的代碼行。這裏是從線程1調用堆棧:
#0 0x9706d9c6 in __pthread_kill()
#1 0x93e2cf78 in pthread_kill()
#2 0x93e1dbdd in abort()
#3 0x02859e78 in dyld_stub__Unwind_DeleteException()
#4 0x0285789e in default_terminate()()
#5 0x024c7f4b in _objc_terminate()
#6 0x028578de in safe_handler_caller(void (*)())()
#7 0x02857946 in __cxa_bad_typeid()
#8 0x02858b3e in __cxa_current_exception_type()
#9 0x024c7e49 in objc_exception_rethrow()
#10 0x02199e10 in CFRunLoopRunSpecific()
#11 0x02199ccb in CFRunLoopRunInMode()
#12 0x039a8879 in GSEventRunModal()
#13 0x039a893e in GSEventRun()
#14 0x00732a9b in UIApplicationMain()
#15 0x00001e5b in main
正如你可以看到這個調用堆棧是不是非常有幫助,因爲它不顯示從我的代碼的任何方法。另外,錯誤中顯示的調用堆棧有22個內存地址,而線程1的堆棧只有15個,地址根本不匹配。沒有其他線程似乎包含任何有用的信息。
如何從錯誤(具有22個地址的那個)看到「First throw call stack」的線程,以便找到導致此錯誤的行?也許我有一些設置不正確,導致相關堆棧無法檢索?
如果有人能指出我對這個方向正確,我會非常感激。試圖手動找到違規行是非常繁瑣的。
謝謝!
謝謝Antwan,這個作品完美! 對於任何想要在Xcode 4中執行此操作的人,以下是我使用的步驟: 1.在斷點導航器的左下角(右側第二個選項卡)中,單擊添加(「+」)按鈕。 2.選擇添加異常斷點。 3。對於「例外」,選擇「C++」 4.在「命名」旁邊鍵入「objc_exception_rethrow」 5.單擊完成。 – llama591