【发布时间】:2011-06-16 04:02:13
【问题描述】:
很难追踪 iPad 应用程序中的崩溃。困难实际上源于应用程序失败时不存在错误或堆栈跟踪这一事实。它就像 Keizer Soze 一样消失了,“就这样,噗。他走了。”。
我已经在模拟器和设备上复制了崩溃。设备日志为零,控制台中没有任何内容等。
我知道在崩溃期间,一些CoreGraphics 操作正在后台线程中发生。通常,三个左右的 NSOperation 会踢一些图像混合。
混合由 CGContext* 调用(DrawImage、SetBlendMode、SetAlpha 等)组成。 NSOperation 回调主线程中的一个委托来处理图像并将其设置为UIImage,因此它不应该是 UI 主线程冲突,但我现在不打折。
我是否缺少一些 Xcode 技巧来准确追踪正在发生的事情?或者至少可以更好地了解问题所在?
编辑 我在 Instruments 中运行了该应用程序,跟踪内存使用情况,发现它在 2MB 左右非常稳定。所以,不要认为这是一个内存问题。但经过考虑,这个稳定的 2MB 似乎异常低。 Instruments 是否有可能没有获得 CoreGraphics 分配?
【问题讨论】:
-
我从来没有做过任何 iOS 开发,但是当 iOS 应用程序开始在我身上崩溃(并且没有留下任何日志)时,它最终成为内存不足的问题:关闭所有应用程序并重新启动设备清除了一切。
-
@Ken - 添加了与内存不足相关的编辑。谢谢。
-
确保您不只是在运行应用程序,而是在调试它。要进行验证,请确保断点已打开。
-
回复:内存不足。尝试在 applicationDidReceiveMemoryWarning 委托方法中粘贴 NSLog 或断点,以排除它。实际上,无论如何,XCode 可能会在这种情况下向控制台输出一些东西。
-
同样的情况,应用程序崩溃但没有崩溃日志,调试器没有停止。不知道发生了什么。根据 Instruments 的内存消耗看起来不错。
标签: ios xcode debugging crash xcode-instruments