【发布时间】:2012-02-14 20:10:29
【问题描述】:
我遇到了一个非常令人困惑的崩溃,目前我的智慧已经耗尽......
首先是崩溃日志:
日期/时间:2012-02-14 10:55:09.771 +0100
操作系统版本:Mac OS X 10.7.3 (11D50b)
报告版本:9
崩溃的线程:0
异常类型:EXC_CRASH (SIGABRT)
异常代码:0x0000000000000000, 0x0000000000000000
应用特定信息:
iPhone 模拟器 272,iPhone OS 5.0 (iPhone/9A334)
abort() 调用
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSPlaceholderDictionary initWithCapacity:]:容量 (2147483648) 太荒谬了”
* 首先抛出调用栈:
(0x25ca052 0x21d8d0a 0x24f21b7 0x252597b 0x688e2 0x6a3b5 0x41b2f 0x1f29d 0x1f87e 0xba335c 0xbabd0d 0xcc8a1c 0xcc93a9 0xf3de39 0xf3d143 0xf3e3cf 0xf40a31 0xf4098c 0xf393e7 0xca1812 0xca1ba2 0xc88384 0xc7baa9 0x2333fa9 0x259e1c5 0x2503022 0x250190a 0x2500db4 0x2500ccb 0x2332879 0x233293e 0xc79a9b 0x23ad 0x2325)
线程 0 崩溃:
0 libsystem_kernel.dylib 0x983379c6 __pthread_kill + 10
1 libsystem_c.dylib 0x939e7f78 pthread_kill + 106
2 libsystem_c.dylib 0x939d8bdd 中止 + 167
3 libc++abi.dylib 0x01fa5e78 abort_message + 50
4 libc++abi.dylib 0x01fa389e _ZL17default_terminatev + 34
5 libobjc.A.dylib 0x021d8f4b _objc_terminate + 94
6 libc++abi.dylib 0x01fa38de _ZL19safe_handler_callerPFvvE + 13
7 libc++abi.dylib 0x01fa3946 std::terminate() + 23
8 libc++abi.dylib 0x01fa4b3e __cxa_rethrow + 83
9 libobjc.A.dylib 0x021d8e49 objc_exception_rethrow + 47
10 核心基础 0x02500e10 CFRunLoopRunSpecific + 304
11 核心基础 0x02500ccb CFRunLoopRunInMode + 123
12 图形服务 0x02332879 GSEventRunModal + 207
13 图形服务 0x0233293e GSEventRun + 114
14 UIKit 0x00c79a9b UIApplicationMain + 1175
15 LVM 0x000023ad 主 + 125 (main.m:14)
16 LVM 0x00002325 开始 + 53
我正在使用 Xcode 4.2 在 Lion 10.7.3 下工作。 分析仪没有显示错误,并且该项目直到昨天才稳定运行。 错误本身不是在设置过程中引起的,而是由重新加载要显示的必要数据的手势引起的。
乍一看似乎很清楚:我分配了一个容量无效的 NSDictionary 实例(2147483648 实际上是一个带符号的 -2147483648,因此它可能是溢出工件)。
- 我的系统具有在发生崩溃时停止的所有必要设置:NSZombieEnabled, obj_exc_throw 等。好吧,它停止了,但在 main.m 的主循环中。所以没有信息可看。
- 所以我查找了我所有的 NSXXDictionary 实例并保证它们都具有常量 容量初始化器或使用它们的 [... 字典] 分配。第一个惊喜:它仍然 崩溃。
- 好的,可能是 Xcode 有时无法正确重新编译更改? Xcode 关闭, 清理,重建,扔掉构建目录(构建,缓存,dstroot),重新启动,任何东西。 还是同样的崩溃。
- 如您所见,它在运行循环中崩溃,所以我没有得到关于 地点。好的,启动 Profile->System Trace 并查看是否可以找到....系统跟踪崩溃! 8-0
- Erm....我的同事对当前的更改没有任何问题,所以我尝试使用 SVN 查找 问题究竟出现在哪里。在这里我再次陷入困境:错误消失了 出现,所以我无法确定原因。
那么...是否有任何其他数据结构(NSArray 等)或函数可能导致这种奇怪的行为?或者你有什么好的调试技巧来固定它吗? 感谢您提供任何有用的帮助。
编辑:发现错误并且是我自己:(。请参阅下面的答案
【问题讨论】:
标签: iphone objective-c ios-simulator