【问题标题】:App runs fine from Xcode, but crashes when loaded from home screen应用程序在 Xcode 中运行良好,但从主屏幕加载时崩溃
【发布时间】:2011-08-14 03:51:52
【问题描述】:

正如标题所示,我有一个应用程序从 Xcode 启动时运行良好,但从主屏幕启动时崩溃。

运行构建和分析未显示内存泄漏或警告。 (虽然,我不排除这是一种虚假的安全感。)

对应的Device Log显示:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0439e000

这让我觉得这是一个发布/保留问题,但为什么它没有出现在 Build/Analyze 中?为什么从 Xcode 运行时会运行良好?

编辑

我还应该注意到,应用程序“runs”无论是从 Xcode 还是从主屏幕启动都可以在模拟器中正常运行。我说“runs”是因为它使用了摄像头,所以在这种情况下,在模拟器上运行并不是那么有用。


更新

谢谢大家。所有资源似乎都已正确命名。我正在尝试让 atos 命令正常工作。我不断得到相同的地址,而不是类文件名和行号。

【问题讨论】:

  • 这也发生在我身上,发生在每个项目中,但仅限于模拟器。你的设备有这个问题吗?
  • 这实际上是在设备上。 (上面的日志来自设备并显示在管理器中,因为在“拔下”运行应用程序时看不到控制台日志。)幸运的是,我在每次重大更改后都使用快照,所以最坏的情况是,我可以倒带回到没有发生这种情况的时间,然后慢慢地把它拼凑起来,直到它再次发生,但我宁愿不做那么多调整/构建/调试周期。
  • 您使用的是 iOS 5 测试版吗?我已经看到 cocos2d-iPhone 计划 beta sdk 发生了这种情况。
  • 我目前的目标是 4.3,实际上。感谢您的检查。
  • 尝试检查你是否设置了正确的笔尖名称,因为设备区分大小写,所以当模拟器不区分大小写时会出现问题。

标签: iphone xcode memory-management exc-bad-access


【解决方案1】:

有时(可能在您的情况下)当应用程序首次从 XCode 启动时,它会作为应用程序的新实例进行构建和运行。当您停止它并尝试从主屏幕运行它时,它可能会从后台启动。如果您在应用程序从后台启动时没有正确管理内存状态,则分析器将不会发现内存问题。 要确定是否是这种情况,请尝试双击主页按钮并退出您的应用程序(如果它出现在那里)。然后从主屏幕再次启动它。您也可以尝试使用仪器对其进行调试。

【讨论】:

  • 我确实怀疑并尝试过这个,但没有成功。
【解决方案2】:

忘记atos。我意识到崩溃发生在哪个线程、文件和行号的设备日志列表。它始终在我的 AVCaptureSession 委托 captureOutput 方法中。

在“拔下”运行时,我得到的 CVPixelBufferGetBaseAddress 值高出大约 200 倍。我还发现,当我在其中一个循环中运行一个简单的诊断 NSLog 时,崩溃停止了(但它阻止了主线程上的某些东西被调用,所以这不是永久修复)。

在此过程中,我做了一个暗中调整,删除了对基地址的操作。为了节省循环迭代,我正在做这样的事情来跳过缓冲区中的每个其他像素:

byteIndex   += (bytesPerPixel * 2);

下拉到以下完全解决了问题:

byteIndex   += (bytesPerPixel);

【讨论】:

    猜你喜欢
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多