崩溃 - 从哪里开始?

时间:2011-10-25 01:24:00

标签: iphone xcode crash

我有一个在设备上崩溃的应用程序(在模拟器中运行良好),这让我认为这可能是内存问题......

当它崩溃时,控制台中没有任何消息报告。

每次执行某项操作时都不会崩溃,在应用程序运行并使用一段时间后,它会在不同的时间点崩溃。

我知道我应该问一个更具体的问题 - 但如果有人能够告诉我从哪里开始尝试追踪未在控制台中报告的崩溃,我会非常感激!

我现在正在使用最新版本的XCode(4.2)

提前致谢...

3 个答案:

答案 0 :(得分:2)

很可能是一个记忆问题。如果您想要开始诊断,可以使用内置的Xcode分析器。在Xcode产品中 - > Profile将帮助您入门。

答案 1 :(得分:0)

可能在Project中将 NSZombiesEnabled 值设置为 YES - >编辑Active Executable - >参数 - >变量也有帮助;这将显示基于访问已发布对象的内存访问错误。但在这种情况下,你至少应该得到一个SIG_ABRT或BAD_ACCESS错误......

您还可以记录应用程序在视图控制器的 didReceiveMemoryWarning 函数中收到内存警告的时间 - 在系统内存不足时抛出内容之前调用此函数。那当然可能会导致崩溃而没有任何显示。

答案 2 :(得分:0)

首先,放松一下。

然后阅读Technical Note。 现在,请按照以下步骤操作:

  1. /Users/<username>/Library/Developer/Xcode/DerivedData删除所有文件夹。
  2. /Users/<username>/Library/Application Support/iPhone Simulator删除所有文件夹。
  3. 清理垃圾。
  4. 从设备中删除应用。
  5. 在设备上构建并运行应用程序。
  6. 按照导致崩溃的步骤进行操作。
  7. 现在,转到XCode->Window->Organizer并从“设备”窗格中选择"Device Logs"您的设备。选择具有您的应用程序名称的最新版本。等待XCode到symbolicate the crashlog。现在有两种可能性:

    1. 内存崩溃很少。
    2. 与内存管理相关的崩溃。
    3. 如果是选项1,请在仪器中分析您的应用程序。

      如果选项为2,您应该看到应用程序崩溃的堆栈框架(或模块的堆栈)。 This SO question will be very helpful

      如果你无法理解输出(或者你认为崩溃日志没有象征性 - 或者它的代码没有崩溃),请在这里发布崩溃日志的崩溃线程堆栈,我会调查它。

      PS:在第一部分中,我们执行前两个步骤以确保没有剩余的.app / .dSYM文件,这些文件可能会阻碍过程中的符号化,因为XCode符号符不是那么智能。