你将如何调试这个iphone bug
我不知道从哪里开始,尝试了静态分析器并逐行检查了每一行代码,但仍然没有任何帮助。这意味着您正在尝试使用已解除分配的对象,即发送的你将如何调试这个iphone bug,iphone,objective-c,Iphone,Objective C,我不知道从哪里开始,尝试了静态分析器并逐行检查了每一行代码,但仍然没有任何帮助。这意味着您正在尝试使用已解除分配的对象,即发送的发布或从SuperView移除: 查看如何启用名为NSZombie的调试功能—它使对象即使在发布时也保持活动状态,并让您知道正在访问哪个对象。缺点是程序使用的内存要多得多(因为没有真正释放任何内存),但您只能在发现问题后才使用它,然后将其关闭 亚当是对的。但是您还应该启用 假设您有以下输出: -[CFString respondsToSelector:]: messag
发布
或从SuperView移除:
查看如何启用名为NSZombie的调试功能—它使对象即使在发布时也保持活动状态,并让您知道正在访问哪个对象。缺点是程序使用的内存要多得多(因为没有真正释放任何内存),但您只能在发现问题后才使用它,然后将其关闭 亚当是对的。但是您还应该启用 假设您有以下输出:
-[CFString respondsToSelector:]: message sent to deallocated instance 0x4b9e720
2003-03-18 13:01:38.644您的应用程序[******]*****选择器“释放”
已发送到NSConcretedData类的已解除分配的实例****。
在gdb中键入以下命令(使用您的值交换和):
malloc\u历史记录
这将告诉您分配的位置和内容。在调试器中运行它并查看堆栈跟踪。有什么方法可以告诉您它是什么对象吗?0x4B9E720那么您将消息发送到的字符串是什么?CFString将其缩小了一点。你没有堆栈跟踪吗?它说由于我以前尝试itHoly cow时出现的错误,堆栈日志记录被禁用!我打赌他从来没有想到过!缺少堆栈跟踪表明他没有。
2003-03-18 13:01:38.644 yourApp[**<pid>**] *** *** Selector 'release'
sent to dealloced instance **<address>** of class NSConcreteData.
malloc_history <pid> <address>