Xcode 4栈跟踪调试问题



有一段时间了(我记不清是哪个版本了)Xcode 4没有正常工作。每当我的代码崩溃时,调试器就会显示main()函数,并有这样的堆栈跟踪:

#0  0x9018b9c6 in __pthread_kill ()
#1  0x90105f78 in pthread_kill ()
#2  0x900f6bdd in abort ()
#3  0x03c93e78 in dyld_stub__Unwind_DeleteException ()
#4  0x03c9189e in default_terminate() ()
#5  0x0154df4b in _objc_terminate ()
#6  0x03c918de in safe_handler_caller(void (*)()) ()
#7  0x03c91946 in __cxa_bad_typeid ()
#8  0x03c92b3e in __cxa_current_exception_type ()
#9  0x0154de49 in objc_exception_rethrow ()
#10 0x012f2e10 in CFRunLoopRunSpecific ()
#11 0x012f2ccb in CFRunLoopRunInMode ()
#12 0x012a5879 in GSEventRunModal ()
#13 0x012a593e in GSEventRun ()
#14 0x00013a9b in UIApplicationMain ()
#15 0x00002a02 in main at /Users/dan/Dev/Container/Container/main.m:16

在控制台中,我得到了一些更有意义的信息,在这种情况下,它告诉我:

2011-11-09 10:39:53.886 Container[27273:f803] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds for empty array'

在这个例子中,我知道问题是什么,因为我犯了错误(我试图访问一个空的NSArray对象)的目的是试图得到这个问题的底部。然而,我不知道出了什么问题。到目前为止,我一直忍受着它,因为我已经熟悉了很多bug,并且知道在哪里查找,但是,它仍然成为一个真正的痛苦。

谁能解释一下这个问题?

您可能希望在代码中异常实际发生时停止,而不是在它已经冒泡到主方法时停止。要做到这一点,请设置一个异常断点,如下所示:

最新更新