运行泄漏时崩溃

时间:2010-07-09 08:07:15

标签: iphone crash ios4 memory-leaks

最近安装了4.0 SDK后,我重新编译了一个客户端项目,以测试它在新操作系统下的运行方式。 (之前使用3.1.3测试没有崩溃,只有一次内存泄漏,正式报告给Apple,他们无法在4.0 beta 3上重现,因此关闭。)

一切都非常顺利(测试期间没有崩溃),直到我决定使用Leaks运行它,这导致我的应用程序每次运行都会崩溃。

所有崩溃日志都如下所示:

Thread 0 Crashed:
0   libobjc.A.dylib                 0x00002866 objc_msgSend + 10
1   MyApp                           0x000040b0 0x1000 + 12464
2   MyApp                           0x000040b0 0x1000 + 12464
3   MyApp                           0x000040b0 0x1000 + 12464
...
511 MyApp                           0x000040b0 0x1000 + 12464

我也到处都有泄密,但负责任的图书馆总是苹果公司之一,我的应用程序永远不会出现在堆栈跟踪中。至少对于有堆栈跟踪的泄漏...其中一些是General Block泄漏,根本没有堆栈跟踪。

有什么想法吗?

更新:以上适用于运行iOS 4的iPhone 3GS。当我在运行3.1.3的iPod Touch第一代上运行构建时,我甚至无法启动泄漏,更别提它让它崩溃......但是我可以在旧设备上进行构建和调试。

(我将Base SDK设置为4.0,部署目标设置为3.1.2)

2 个答案:

答案 0 :(得分:0)

看起来你有一个递归调用自身的方法会导致堆栈溢出。

尝试在启用调试符号的情况下编译应用程序,以便显示该方法(希望如此)。

答案 1 :(得分:0)

Claus Broch是正确的,这是由递归引起的。如果这是一个调试版本,它可能是调试器本身导致问题。

升级到Xcode 3.2.3的人对调试器问题的讨论比平常更多。我有一个问题,调试器随机挂起一个明显的失控递归,与特定代码无关。我只是通过完全删除我的/Developer目录并重新安装4.0SDK来解决它。

我通常不喜欢责备这些工具,但在这种情况下可能是有道理的。