【发布时间】:2009-11-15 02:51:57
【问题描述】:
随着我的程序涉及越来越多的代码,我开始对控制台中抛出的错误消息感到有些沮丧:
2009-11-14 14:31:57.513 FC[915:5b27] *** -[SearchResultParser respondsToSelector:]:消息发送到已释放实例 0x82d28e0
这并不是最糟糕的,因为它实际上告诉我它与选择器有关并且它源自 SearchResultParser。但通常我只是收到“发送到已释放实例 0x897867d6 的消息”。
其他时候是堆栈转储,它只是告诉我,我认为是什么,当前堆栈中的对象的内存分配。
也许我被宠坏了,但我已经习惯了来自错误消息的更多信息,尤其是来自动态语言的信息:比如发生错误的行号、相关对象的实例名称等等。
我阅读了有关使用 Instruments 的内容,当然也有断点。当答案就在你面前:“0x82d28e0 导致崩溃”!
以一种糟糕的方式,我让我想起了我从微控制器 IDE 收到的错误消息:)
有没有办法从实例地址出发,例如0x82d28e0 到实例名称? 有没有办法使用来自控制台的信息来缩小代码中导致停止的位置?尤其是“发送到已释放实例的消息”,因为我显然有点渴望我的内存管理:)
希望有人可以帮助我更好地了解控制台:) 谢谢。
【问题讨论】:
-
你检查过调试器窗口吗?它通常会显示完整的堆栈跟踪以及发生错误的代码行。
-
一开始我有点困惑,因为调试器似乎只是汇编代码,然后我尝试引入故意的释放错误,你是对的,我向我显示了释放错误之后的行或块我自己的代码。这比我以前更接近了:) 谢谢 MihaiD
标签: iphone memory-management console