应用程序崩溃.... objc_exception_throw

时间:2012-02-29 16:16:38

标签: objective-c ios xcode cocoa-touch

我的应用程序一度崩溃。它没有告诉我原因,异常断点发生在

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

所以我不知道导致崩溃的原因是什么。在左侧,它告诉我这是因为objc_expcetion_throw。我该怎么调试呢? 感谢

3 个答案:

答案 0 :(得分:6)

在这种情况下,我将创建一个断点来打破所有异常。如果您只是单击断点选项卡上的添加按钮,则这是创建的默认断点。

有了这个断点,XCode将在异常点停止,我会看到它与堆栈一起发生的代码行。

我会发布一个这样的图片,但我没有足够的代表!

答案 1 :(得分:5)

使用@try / @catch

@try {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
@catch (NSException *ex)
{
    // log ex...
}

或者您可以使用未捕获的异常处理程序:

void uncaughtException(NSException *except)
{
    // log Except
    NSLog(@"Exception!");
}

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

最后,你总是可以打破objc异常:

Product->debug->create symbolic breakpoint
Symbol: objc_exception_throw

答案 2 :(得分:1)

按照理查德的建议并实施uncaughtException处理程序。在处理程序中设置断点。触发异常时,在输出控制台中输入:

po [except callStackSymbols]

这应该会为您提供有关异常来源的更多详细信息。

注意:except是您使用的异常变量的名称。