【问题标题】:Help diagnosing crash in Cocoa framework - possible memory leak?帮助诊断 Cocoa 框架中的崩溃 - 可能的内存泄漏?
【发布时间】:2011-03-19 15:04:40
【问题描述】:

我目前是migratingFragaria 框架,从纯 GC 环境到支持 GC。工作完成后(或我认为必须完成的工作),我能够毫无问题地运行框架附带的示例,并且 Instruments 没有显示任何重大内存泄漏。

我在我的非 GC 应用程序中包含了非 GC Fragaria,一旦我将光标放在它上面,它就会崩溃。老实说,使用模式与示例不同,因为我将其嵌入到 NSViewController 而不是 NSDocument 的实例中。

你能给我一些关于如何调试它的提示吗?我现在有点迷茫了。

【问题讨论】:

  • 内存泄漏和崩溃是两个几乎相反的事情。当(除其他外)您发布不应发布的内容时,您的应用程序会崩溃。当你不释放你应该释放的东西时,它会泄漏内存。 Instruments 中的 Zombies 模板将有助于解决过度发布的崩溃问题; Leaks 模板将有助于解决未充分发布的泄漏。
  • 我提交的代码确实不完整。僵尸让我走上了正确的道路,尽管不是我的框架版本的唯一问题。

标签: objective-c cocoa frameworks nsdocument


【解决方案1】:

首先要做的是构建和分析代码,然后修复它发现的任何问题。

接下来,尝试在启用僵尸检测的情况下运行 (google NSZombie)。

最后,每次崩溃的堆栈跟踪都应该让您很好地了解哪里出了问题。

【讨论】:

  • Instruments 的 Zombies 模板比 NSZombieEnabled 更易于使用,因为 Instruments 可以让您查看僵尸对象的历史。使用NSZombieEnabled,您所能做的就是使用调试器,它只显示现在,而不是过去。
  • 这正是我所需要的。好吧,我正在解决大量内存泄漏问题。
猜你喜欢
  • 2020-09-07
  • 2018-10-24
  • 2012-10-09
  • 1970-01-01
  • 2011-03-28
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
相关资源
最近更新 更多