【问题标题】:XCode Instrument - Allocations Instrument not finding zombiesXCode Instruments - 分配工具找不到僵尸
【发布时间】:2012-08-21 08:54:25
【问题描述】:

我正在运行 Xcode 4.4.1 并构建一个 iOS 应用程序。我的应用程序正在崩溃并且存在内存问题(我知道是因为它在 objc_msgSend 上崩溃了)。

所以我正在运行 Zombies Instruments 工具。问题是,它运行没有错误,对我的僵尸没有帮助:

如果我关闭僵尸检测,那么程序会意外崩溃。我是否错误地使用了僵尸工具?或者这是否表明我有不同的问题?

无用的堆栈跟踪...

#0  0x0212a09b in objc_msgSend ()
#1  0x01bd36b7 in -[NSError dealloc] ()
#2  0x0212ae3d in _objc_rootRelease ()
#3  0x01bc1f28 in -[NSFilesystemItemRemoveOperation dealloc] ()
#4  0x01bb0e16 in -[NSOperation release] ()
#5  0x0212ae00 in objc_release ()
#6  0x0212bc50 in (anonymous namespace)::AutoreleasePoolPage::pop(void*) ()
#7  0x004faea8 in _CFAutoreleasePoolPop ()
#8  0x004fd80b in __CFRunLoopRun ()
#9  0x004fcd84 in CFRunLoopRunSpecific ()
#10 0x004fcc9b in CFRunLoopRunInMode ()
#11 0x02ca57d8 in GSEventRunModal ()
#12 0x02ca588a in GSEventRun ()
#13 0x0127a626 in UIApplicationMain ()
#14 0x00002e5d in main at /Users/willentriken/Developer/EnglishStudy/EnglishStudy/main.m:16
#15 0x00002dc5 in start ()

【问题讨论】:

  • 您是否尝试过在 Xcode 中运行 Zombie 诊断工具(Product->Edit Scheme->Diagnostics->Enable Zombie Objects)?如果没有,请尝试在设备或模拟器上运行您的应用。
  • 当我启用 Zombie Objects 应用程序正常工作时,在使用 Zombie 的地方没有日志输出或断点。
  • 听起来很像你没有任何僵尸。也许如果您引用您的堆栈跟踪和崩溃日志,我们可以做得更好。
  • 添加了堆栈跟踪。没有崩溃日志。显示了 EXC_BAC_ACCESS,但日志没有任何内容,应用程序中的其他线程继续运行。例如。页面上有一个旋转器,它一直在运行。

标签: iphone ios xcode ios5 nszombie


【解决方案1】:

在 ARC 和 NSZombieEnabled 下,iOS 6.0 之前(以及 Mac OS 10.8 之前)存在一个错误,该错误会阻止自动释放实例变量和属性。

这解释了你所看到的,因为物体只会泄漏而不是变成僵尸。

解决方法:在 iOS 6.0 下测试。

附加信息:在 Mountain Lion 下,在 5.1 模拟器中测试时问题仍然存在。

【讨论】:

  • 确实很有趣 - 你有没有关于那个的一些背景信息(链接、openradar id、..)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 2011-07-08
相关资源
最近更新 更多