首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在autoreleasePool排水系统中坠毁

在autoreleasePool排水系统中坠毁
EN

Stack Overflow用户
提问于 2013-12-02 11:22:52
回答 1查看 3.4K关注 0票数 1

我有一个罕见的namespace)::AutoreleasePoolPage::pop(void*) (匿名在游泳池排水系统崩溃)。据我所知,它是由自动释放池拥有的某个对象过度释放造成的。

我尝试使用NSZombieEnabled = YES,并使用带有僵尸跟踪器的工具。这些错误是不可复制的。控制台中没有记录过释放的消息,僵尸跟踪器不显示任何僵尸警报。但当我摘下这些旗子时,坠机事件经常会再次发生。有人看到过类似的行为吗?

还有其他方法可以轻松地调试吗?我正在使用OS10.8.5中的Xcode 5.0.1。我正在粘贴以下崩溃的线程跟踪:

例外类型: EXC_BAD_ACCESS (SIGSEGV)

例外代码: EXC_I386_GPFLT

应用程序特定信息: objc_msgSend()选择器名称: release

0 libobjc.A.dylib 0x00007fff8b3040a3 objc_msgSend +35 1 com.apple.CoreFoundation 0x00007fff855d086f CFRelease + 591 2 com.apple.CoreFoundation 0x00007fff856028a9 -__NSDictionaryM dealloc + 249 3 libobjc.A.dylib 0x00007fff8b30665a (匿名名称空间)::AutoreleasePoolPage::pop(void*)+ 502 4 com.apple.ist.istcore 0x000000010fb91d82 -SomeFileOperation main + 117 5 NSThread__main + 1318 com.apple.Foundation 0x00007fff81f2070b 6 libsystem_pthread.dylib 0x00007fff86389899 _pthread_body + 138 7 libsystem_pthread.dylib 0x00007fff8638972a _pthread_start + 137 8 libsystem_pthread.dylib 0x00007fff8638dfc9 thread_start + 13

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-12-02 11:48:11

[__NSDictionaryM dealloc]

一本字典正在被取消分配。

CFRelease

当字典被解除分配时,每个键和值都会得到一条release消息。

但是,字典中的一个对象已经被解除分配,这意味着发送另一个release消息会导致非法访问。

检查字典中的键/值,您正在过度释放其中一个键/值。我建议您也执行一个完整的项目清洁,然后深入分析(请参阅Project菜单)。在大多数情况下,这将帮助您找到bug。

您还可以向NSDictionary dealloc添加一个符号断点,等待它触发,然后使用调试器检查内部数据的状态。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20327085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档