Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 间歇性NSArray索引异常_Ios_Xcode_Debugging - Fatal编程技术网

Ios 间歇性NSArray索引异常

Ios 间歇性NSArray索引异常,ios,xcode,debugging,Ios,Xcode,Debugging,我有一次撞车,每天至少发生一次,我真的一点也不知道。它似乎在随机时刻发生在我身上,我无法追踪堆栈来理解它发生的原因。如果有人能给我指出正确的方向,甚至给我看一些关于如何正确跟踪值的在线文档和教程,那就太完美了。我所了解的最多的是,有人试图访问数组中的索引,但我始终无法弄清楚该数组可以是什么。我已经包含了下面输出窗口中的信息: 2012-09-28 12:45:26.884 TestApp[1683:c07] *** Terminating app due to uncaught exceptio

我有一次撞车,每天至少发生一次,我真的一点也不知道。它似乎在随机时刻发生在我身上,我无法追踪堆栈来理解它发生的原因。如果有人能给我指出正确的方向,甚至给我看一些关于如何正确跟踪值的在线文档和教程,那就太完美了。我所了解的最多的是,有人试图访问数组中的索引,但我始终无法弄清楚该数组可以是什么。我已经包含了下面输出窗口中的信息:

2012-09-28 12:45:26.884 TestApp[1683:c07] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(0x1bdd052 0x19ccd0a 0x1bc9db8 0x29522 0x23e76 0x22bed 0x21e36 0xdfee 0xdba8 0xd3cc 0x1bdee72 0x13339ef 0x1bb197f 0x1b14b73 0x1b14454 0x1b13db4 0x1b13ccb 0x2692879 0x269293e 0xa1ba9b 0x2ded 0x2d25)
terminate called throwing an exceptionCurrent language:  auto; currently objective-c
(gdb) bt
#0  0x98468a6a in __pthread_kill ()
#1  0x98554acf in pthread_kill ()
#2  0x9858b4f8 in abort ()
#3  0x021cbe78 in abort_message ()
#4  0x021c989e in default_terminate ()
#5  0x019ccf4b in _objc_terminate ()
#6  0x021c98de in safe_handler_caller ()
#7  0x021c9946 in std::terminate ()
#8  0x021cab3e in __cxa_rethrow ()
#9  0x019cce49 in objc_exception_rethrow ()
#10 0x01b13e10 in CFRunLoopRunSpecific ()
#11 0x01b13ccb in CFRunLoopRunInMode ()
#12 0x02692879 in GSEventRunModal ()
#13 0x0269293e in GSEventRun ()
#14 0x00a1ba9b in UIApplicationMain ()
#15 0x00002ded in main (argc=1, argv=0xbffff39c) at /Users/seb/Desktop/Development/main.m:14

您需要使用Xcode调试器:

  • 点击工具栏中的断点按钮:

  • 点击左窗格中的断点选项:

  • 点击左下角的“+”按钮,然后选择“添加异常断点”:

  • 在显示的视图中点击“完成”,您将看到类似的内容(顶部的已禁用):

  • 确保您的应用程序方案已启用lldb:

+1帮助用户调试异常!需要补充的是,问题本身是有东西试图访问空可变数组的第一个元素。一旦发现问题,在执行任何操作之前,可能先检查数组是否为空?或者它一开始就不应该是空的,这就是问题所在?我想说一些类似于@Metable的话,但实际上,一旦你有了导致错误的代码行,你就可以追踪原因(但添加日志消息等)。这是一个起点!是的,有点不必要。一旦他发现了问题所在,他应该不会有太多的调试困难。+1感谢他教我如何钓鱼,而不仅仅是给我带晚餐。下次我遇到异常时,我可能会发现问题所在。再次感谢你。+1感谢你感谢我!相信我,在过去的8年里我得到了很多帮助!