【问题标题】:Crash when running Leaks运行泄漏时崩溃
【发布时间】:2010-07-09 08:07:14
【问题描述】:

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

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

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

线程 0 崩溃: 0 libobjc.A.dylib 0x00002866 objc_msgSend + 10 1 我的应用程序 0x000040b0 0x1000 + 12464 2 我的应用程序 0x000040b0 0x1000 + 12464 3 我的应用程序 0x000040b0 0x1000 + 12464 ... 511 我的应用程序 0x000040b0 0x1000 + 12464

我也到处都有泄漏,但责任库始终是 Apple 的库之一,而且我的应用程序从未出现在堆栈跟踪中。至少对于具有堆栈跟踪的泄漏...其中一些是完全没有堆栈跟踪的常规块泄漏。

有什么想法吗?

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

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

【问题讨论】:

  • 我在 4.0 上的测试也遇到了一些问题,我在构建测试项目时使用的类别没有加载。奇怪。
  • 一个构建已提交给 Apple,并于昨天获得批准。现在,我将在 Leaks 确实给出误报的假设下工作(当它不忙于崩溃时!)

标签: iphone crash ios4 memory-leaks


【解决方案1】:

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

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

【讨论】:

  • 这是一个调试版本。此外,当我通过 Xcode 正确构建和调试时,我可以很好地运行此构建而不会发生任何崩溃。仅当我尝试使用 Leaks 仪器时才会发生此崩溃。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    相关资源
    最近更新 更多