2010-02-19 43 views
2

错误warning: check_safe_call: could not restore current frame通常表示什么?我在其他地方读过这是一个记忆问题。它总是一个记忆问题?警告:check_safe_call:无法恢复当前帧

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

任何想法如何调试?谢谢。

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

+0

究竟你在做什么? – 2010-02-19 17:02:15

回答

4

我已经看过这几次,但从来没有能够直接指出它到一个问题彻底。虽然,时间我见过它通常有某种无限循环或递归出错,调试器会捕获它。我不知道你是否已经放置了足够长的时间,但过了一段时间,调试器应该开始加载它所具有的堆栈帧,并将它们显示在调试器窗口中。你应该能够看到发生了什么问题。

正如我所说的,通常当我看到这是由于无限循环或递归造成的,调试器将向同一个函数显示5000个以上的调用,因此找到问题不应该太困难 - 但是,说这可能不是确切的问题。

只是我的两分钱。

+0

这是我造成错误的确切问题。 – 2010-02-19 17:06:38

0

我也遇到了这个问题,但我发现它是由于图像分辨率太高所致。它可以在模拟器中完美工作,但不在设备上。我将图像的大小调整为每英寸180像素的320x480像素,现在它完美地工作。

希望有帮助

0

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

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