com.apple.root.default-overcommit-priority -[CFString release]:消息发送到释放的实例

Posted

技术标签:

【中文标题】com.apple.root.default-overcommit-priority -[CFString release]:消息发送到释放的实例【英文标题】:com.apple.root.default-overcommit-priority -[CFString release]: message sent to deallocated instance 【发布时间】:2013-10-21 12:02:41 【问题描述】:

在我的应用程序中,线程 13 标记为:

com.apple.root.default-overcommit-priority

在下面我看到一个:

0 __forwarding__

下面我有一个:

6 _pthread_wqthread

原因:

-[CFString release]: message sent to deallocated instance

我知道一条消息正在发送到一个已释放的实例,我的问题是我找不到发生这种情况的位置。 我启用了僵尸、异常记录等。

我还创建了一个导入的框架(带有完整的调试符号),我感觉这就是错误的根源。

由于框架不能直接执行,并且必须导入,我如何调试/单步执行等,以便尝试找到触发此问题的确切行?

此外,除了程序集/堆栈/寄存器信息之外,我如何获得有关崩溃的更多信息?

【问题讨论】:

我不知道它是否仍然与您相关,但无论如何:您可以尝试将框架中的文件直接添加到您的主项目并尝试调试,您​​应该能够添加断点然后做其他事情。尽管对我来说这看起来像是一些多线程问题。在这种情况下,崩溃线并不那么明显。 使用符号断点可能会有所帮助:[CFString release] 或其中一些命令:lldb.llvm.org/lldb-gdb.html 【参考方案1】:

这些 lldb 扩展对调试非常有帮助。在您的情况下,bmessage 命令将允许您在 [CFString release] 上设置断点,以便您可以跟踪并追踪在同一对象上两次调用 release 的位置。

https://github.com/facebook/chisel

【讨论】:

以上是关于com.apple.root.default-overcommit-priority -[CFString release]:消息发送到释放的实例的主要内容,如果未能解决你的问题,请参考以下文章