Objective c 自动释放池排水管发生故障

Objective c 自动释放池排水管发生故障,objective-c,memory-management,Objective C,Memory Management,我有一个罕见的(匿名名称空间)::AutoreleasePoolPage::pop(void*)在[pool drain]中崩溃。据我所知,它是由自动释放池拥有的某些对象的过度释放造成的 我尝试使用NSZombieEnabled=YES,并使用带有僵尸跟踪器的工具。这种错误是不可复制的。控制台中没有记录过释放消息,僵尸跟踪器不显示任何僵尸警报。但当我取下这些旗子时,碰撞是可以重现的。有人见过类似的行为吗 有没有其他方法可以轻松地调试?我正在OS 10.8.5中使用Xcode 5.0.1。我正在粘

我有一个罕见的(匿名名称空间)::AutoreleasePoolPage::pop(void*)在[pool drain]中崩溃。据我所知,它是由自动释放池拥有的某些对象的过度释放造成的

我尝试使用NSZombieEnabled=YES,并使用带有僵尸跟踪器的工具。这种错误是不可复制的。控制台中没有记录过释放消息,僵尸跟踪器不显示任何僵尸警报。但当我取下这些旗子时,碰撞是可以重现的。有人见过类似的行为吗

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

异常类型:EXC\U坏访问(SIGSEGV)

例外代码:EXC_I386_GPFLT

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

0 libobjc.A.dylib 0x00007fff8b304a3 objc_msgSend+35

1 com.apple.CoreFoundation 0x00007fff855d086f CFRelease+591

2 com.apple.CoreFoundation 0x00007fff856028a9 -[\uu NSDictionaryM dealloc]+249

3 libobjc.A.dylib 0x00007fff8b30665a(匿名 名称空间):AutoreleasePoolPage::pop(void*)+502

4 com.apple.ist.istcore 0x000000010fb91d82 -[SomeFileOperation main]+117

< Po.0. 0x7FFF81F2070B NSThread\uu main+1318

6 libsystem_pthread.dylib 0x00007fff86389899_pthread_主体+ 138

7 libsystem_pthread.dylib 0x00007fff8638972a_pthread_start+ 137

8 libsystem_pthread.dylib 0x00007fff8638dfc9线程开始+ 十三,


提前感谢。

[\uu NSDictionaryM dealloc]

一本字典正在被解除分配

CFRelease

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

但是,字典中的一个对象已被释放,这意味着发送另一条
release
消息会导致非法访问

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


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

[\uu NSDictionary-dealloc]

一本字典正在被解除分配

CFRelease

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

但是,字典中的一个对象已被释放,这意味着发送另一条
release
消息会导致非法访问

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


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

您可以输入一些代码吗?我无法输入准确的代码。。很抱歉。我有一些FileOperation类(NSOperation的子类)。我已经重写了-main方法,我在那里做了一些与下载文件相关的事情。我有@autoreleasepool围绕着codein-main方法。我正在寻找容易调试的方法,因为僵尸跟踪器在这里没有帮助。。我没有看到NSZombieEnabled的过度发布日志,但是当这个标志被禁用时它会崩溃。你能输入一些代码吗?我不能输入确切的代码。。很抱歉。我有一些FileOperation类(NSOperation的子类)。我已经重写了-main方法,我在那里做了一些与下载文件相关的事情。我有@autoreleasepool围绕着codein-main方法。我正在寻找容易调试的方法,因为僵尸跟踪器在这里没有帮助。。我看不到NSZombieEnabled的过度发布日志,但当禁用此标志时,它会崩溃。