【问题标题】:My iOS app crashes on start up我的 iOS 应用程序在启动时崩溃
【发布时间】:2013-04-17 21:27:15
【问题描述】:

我一直在完美正常地开发一个 iOS 应用程序,然后突然当我启动调试器时,我得到一堆机器代码,它在这里停止:

0x2c70bb:  popl   %ebp
0x2c670bc:  ret

我在日志中没有得到任何输出。当我运行僵尸或泄漏时,应用程序运行良好,但当我只使用模拟器时,我什么也得不到。我什至将断点放在应用程序委托的第一行代码中,但它没有命中。

有什么建议吗?在这种情况发生之前,我什至在我的代码中返回到以前工作的代码,它做同样的事情。我已经开发 iOS 大约 2 年了,这是第一次。

我已经寻找解决方案,但一无所获。

【问题讨论】:

  • 你是如何恢复的?源代码控制?

标签: ios logging crash


【解决方案1】:

如果您的应用委托没有命中,那么它将在您的 main.m 中的自动释放池语句中崩溃。

如果没有完整的堆栈跟踪,就很难调试。我会推荐以下内容:

  • 确保您的主窗口和根 xib 都正常
  • 从您的应用委托中剥离除基础知识之外的所有内容

此外,在您的 main.m 文件中,您应该会看到类似以下内容:

UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

第四个参数是delegateClassName,Apple Docs 表示:

委托类名称
实例化应用程序委托的类的名称。如果 principalClassName 指定 UIApplication 的子类,则可以指定子类为委托;子类实例接收应用程序委托消息。如果您从应用程序的主 nib 文件加载委托对象,请指定 nil。

所以我会仔细检查您的委托类名称是否在应用程序主 xib 或您的委托中设置 - 如果它不存在,我建议明确并添加它。

【讨论】:

    【解决方案2】:

    您可以在 main 上执行此操作以捕获异常(支持文件:main.m):

    int main(int argc, char *argv[])
    {
        int retVal = 0;
        @autoreleasepool {
            NSString *classString = NSStringFromClass([CDAppDelegate class]);
            @try {
                retVal = UIApplicationMain(argc, argv, nil, classString);
            }
            @catch (NSException *exception) {
                NSLog(@"Exception - %@",[exception description]);
                exit(EXIT_FAILURE);
            }
        }
        return retVal;
    }
    

    或者/您可以尝试查看是否有要恢复的快照。 (但最好的做法是拥有一个 git repot 并定期提交/推送;))

    【讨论】:

    • 我试过这个,甚至在 int retVal = 0; 上放了一个断点。并且它没有到达断点并且它会发生同样的崩溃。
    • 您在调试会话中没有堆栈跟踪吗?
    【解决方案3】:

    好的,这是最奇怪的事情。我发现了这个问题,但仍然不确定为什么会发生这种情况。

    我有一个单例类,用于存储一些运行时设置信息。 我有一个具有特定设置的类,我分配给主单例类。

    在特定的设置类中,我有大约 15 个属性。如果我添加的属性多于 15 个,则会发生崩溃。如果我向类添加第 16 个属性,应用程序在启动时会崩溃,它甚至永远不会到达 main.m 中的代码。

    这很奇怪,我无法解释。我只能假设这是一个内存问题,但说真的,它只有 15 个属性。

    1 个整数 12 个 NSString 2 个 NSMUtableArray,每个只有几条记录

    如果有人知道为什么会发生这种情况,请告诉我们...

    【讨论】:

      猜你喜欢
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      相关资源
      最近更新 更多