警告:check_safe_call:无法恢复当前帧

时间:2010-02-19 09:47:29

标签: iphone objective-c cocoa-touch xcode

错误warning: check_safe_call: could not restore current frame通常表示什么?我在其他地方读到这是一个记忆问题。这总是一个记忆问题吗?

我在设备上遇到此错误(不是模拟器)。 NSZombieEnabled没有显示任何内容。如果我构建和调试,我的调试器窗口什么都不显示。峰值内存不是那么高(3MB)。每次在地图上滚动后,它都会以相同的错误崩溃。

任何想法如何调试这个?感谢。

编辑:我在下面的答案中添加了崩溃的原因(创建了太多的SQLite连接)。如果其他人收到此错误并找到解决方案,请在下面发布。这似乎是一个有多种原因的错误消息。

4 个答案:

答案 0 :(得分:4)

我已经看过几次,但从来没有能够直接找到问题。虽然,时间我已经看到它通常会出现某种无限循环或递归错误,调试器会抓住它。我不知道你是否已经离开它足够长,但过了一会儿,调试器应该开始加载它拥有的堆栈帧并在调试器窗口中显示它们。你应该能够看到出了什么问题。

就像我说的那样,通常当我看到它是由于无限循环或递归而且调试器会向同一个函数显示超过5000个调用时,所以找到问题应该不会太难 - 但是,说那可能不是确切的问题。

只是我的两分钱。

答案 1 :(得分:1)

答案 2 :(得分:0)

我也遇到了这个问题,但我发现它是由分辨率过高的图像引起的。它可以在模拟器中完美运行,但不能在设备上运行。我将图像调整为320x480像素,每英寸180像素,现在效果非常好。

希望有所帮助

答案 3 :(得分:0)

我在代码中发现了错误。事实证明我使用的SQLite数据库导致了崩溃。我忘了关闭我的数据库连接,每次代码命中一个特定的函数时,我都会打开一个新的连接。最终有太多了,应用程序崩溃了。

看起来很多这些错误与一种过载有关(正如Jasarien所说)。