你会如何调试这个iphone bug

时间:2010-08-16 22:46:58

标签: iphone objective-c

-[CFString respondsToSelector:]: message sent to deallocated instance 0x4b9e720

我不知道从哪里开始,尝试使用静态分析器并逐步完成每行代码,但仍无法提供帮助。

3 个答案:

答案 0 :(得分:5)

这意味着您正在尝试使用已取消分配的对象 - 即已发送releaseremoveFromSuperview:

检查this page以了解如何启用名为NSZombie的调试功能 - 它即使在发布时也能使对象保持活动状态,并让您知道正在访问哪个对象。缺点是该程序使用了更多的内存(因为没有真正释放),但只有在找到问题然后将其关闭之后才能使用它。

答案 1 :(得分:3)

亚当是对的。但是你也应该启用MallocStackLogging

我们假设你有这个输出:

2003-03-18 13:01:38.644 yourApp[**<pid>**] *** *** Selector 'release' 
sent to dealloced instance **<address>** of class NSConcreteData.

在gdb中键入以下命令(swap和您的值):

malloc_history <pid> <address>

这将告诉您分配的位置和内容。

答案 2 :(得分:0)

在调试器中运行它并查看堆栈跟踪。