【问题标题】:Iphone random crash issueiPhone随机崩溃问题
【发布时间】:2012-03-14 07:23:14
【问题描述】:

最近我的iphone项目快结束了,但是在app运行过程中遇到了一些随机崩溃,并且调用堆栈总是位于COCOA库中,棘手的问题,不知道如何处理,有些情况我什至怀疑这是苹果的缺陷吗?

我的问题。

  1. 对于那些重现率低的随机崩溃问题,你们是怎么处理的呢?有什么方法可以帮助提高重现率?

  2. 如何修复这些位于 COCOA 库中的崩溃?如何找到更多线索?

任何想法或讨论将不胜感激,在此先感谢。

【问题讨论】:

  • 您的代码是什么样的以及您尝试过什么?此外,当您的应用崩溃时,您还需要在日志中发布您获得的内容。
  • 应用程序崩溃不一致的情况大多是由于内存问题而发生...请在仪器中分析您的代码。

标签: iphone random crash


【解决方案1】:

如果应用程序在 COCOA 代码中崩溃,这并不意味着 COCOA 代码错误 - 更有可能是您向其提供了一些无效数据(例如,它不应该出现的地方是 nil)。如果它是随机发生的,则可能存在一些多线程并发,或者您的某些对象变得(自动)过早释放等。您必须仔细分析与发生崩溃的 COCOA 类一起运行的代码,或者尝试内存管理调试为其他回答者建议。

【讨论】:

  • 如何让这种随机崩溃更容易重现?由于重现是开始修复的第一步,请有这种经验的人分享,谢谢。
  • 不幸的是,没有通用的配方,根据您使用的 API,它可以取决于您能想象和无法想象的任何东西。找到随机崩溃的重现性(以及原因!)通常比修复错误更复杂。一些可能导致随机性的想法:并发线程修改相同的对象,对象自动释放过早,事件处理程序在事件提供者之前释放(或未创建!),等等。
【解决方案2】:

一般来说,我不会开始认为是 COCOA 的问题。它发生了,但大多数情况下都是我们的错。

当这种崩溃发生时,首先要做的是运行静态分析器,有时它只是一个保留/释放问题。 如果您使用 ARC,请跳过此部分并开始创建异常断点(在链接指南中搜索“To add an exception breakpoint...”)。异常断点有助于在抛出异常时获得更详细的崩溃日志。

第三步是使用 Instruments,寻找浪费内存、泄漏和任何其他形式的内存消耗。几个 WWDC 视频深入解释了如何使用 Instruments。

【讨论】:

    【解决方案3】:

    启用 NSZombie 标志。 项目(在xcode的左上角)>诊断>启用僵尸对象

    它会让你知道你的代码在哪里崩溃..找到它修复它

    【讨论】:

      猜你喜欢
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 2014-10-17
      • 2013-08-23
      相关资源
      最近更新 更多