2010-07-09 116 views
0

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

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

所有的崩溃日志是这样的:

 
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 

我也有泄露所有的地方,但负责任的图书馆永远是苹果的一个,和我的应用程序不会出现在堆栈跟踪。至少对于有堆栈轨迹的泄漏......其中有些是普通块漏洞,根本没有堆栈轨迹。

任何想法?

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

(我设置我的基地SDK 4.0和部署目标3.1.2)

+0

我也有过与试验一些问题上的4.0,我用的,而我是构建测试项目没有加载的类别。奇。 – 2010-07-09 08:25:48

+0

构建已提交给Apple,并于昨天获得批准。现在我要去泄漏确实给误报的假设下进行工作(当它不是忙崩溃了!) – 2010-07-28 23:07:06

回答

0

它看起来像你有一个方法递归调用本身导致堆栈溢出。

尝试编译您的应用程序与调试符号启用,所以该方法将显示(希望)。

+0

这是一个调试版本。另外,我可以就好了,没有任何崩溃,当我构建和调试通过的Xcode正确运行此版本。当我尝试使用Leaks工具时,只会发生这种崩溃。 – 2010-07-09 18:26:25

0

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

对于升级到Xcode 3.2.3的人来说,关于调试器问题的讨论比平常多。我对调试器随意挂在与特定代码无关的明显失控递归方面存在问题。我只通过完全删除我的/Developer目录并重新安装4.0SDK来解决此问题。

我通常不喜欢责怪的工具,但在这种情况下,它可能是必要的。