如何追踪CFRetain崩溃?

时间:2012-08-09 12:10:51

标签: objective-c xcode

我一直试图解决此次崩溃,并且不知道从哪里开始。有人可以帮我弄清楚如何使用Xcode的工具正确导航这些信息以找到罪魁祸首吗?我甚至不知道这些细节是什么:

enter image description here

2 个答案:

答案 0 :(得分:1)

xcode调试的第一步是设置异常断点。为此,请选择左侧边栏中的例外选项卡,然后单击底部的加号并选择例外断点。这可以提供帮助,因为它会在抛出任何异常时暂停执行,从而更容易追踪。

也就是说,基于你发布的屏幕截图,它看起来像是一个对象被释放两次,所以这可能没那么多。在整个代码中使用日志语句或其他断点可能有助于您找出问题发生的位置。

屏幕截图中显示的详细信息是已编译的汇编代码,使用所调用的内容进行注释。 CFRetain由cocoa内部用于释放对象(即在-release的实现中)。

答案 1 :(得分:1)

仪器工具应该是您的第一个停靠点 - 特别是泄漏和分配分析仪。

要使用它,请在Xcode的“产品”菜单中选择Profile选项。

您可能希望使用旨在捕获对象过度释放的NSZombie对象进行调查。

当然,您可能只是将指针传递给某个不是Core Foundation / Cocoa对象的指针。