gpt4 book ai didi

iphone - Heisenbug -> NSInvalidArgumentException : capacity is ridiculous

转载 作者:行者123 更新时间:2023-12-03 20:52:46 29 4
gpt4 key购买 nike

我遇到了一个非常令人困惑的崩溃,我目前正在用尽我的智慧......

首先是崩溃日志:

日期/时间: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 操作系统 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 并查看是否可以找到....System trace crashes ! 8-0
  • 嗯....我的同事对当前的变化没有问题,所以我试图用SVN找到
    问题究竟出在哪里。在这里我再次陷入困境:错误消失并且
    出现,所以我无法确定原因。

  • 那么......是否有任何其他数据结构(NSArray 等)或函数可能导致这种奇怪的行为?或者你有什么好的调试技巧来确定它?
    感谢您提供任何有用的帮助。

    编辑:发现错误,是我自己:(。见下面的答案

    最佳答案

    再一次,自己的愚蠢规则......
    如果您遇到相同的错误,请搜索所有可能的构造函数。事实上,我忽略了一个 [NSXXDictionary dictionaryWithCapacity] 构造函数,其中实际上容量是非法值。它在运行时循环中被深度嵌套调用。

    我只搜索了 initWithCapacity 因为我通常只使用没有容量的字典构造函数,而我的无意识假设自然是错误的。

    关于iphone - Heisenbug -> NSInvalidArgumentException : capacity is ridiculous,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9275371/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com