我的应用程序一度崩溃。它没有告诉我原因,异常断点发生在
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
所以我不知道导致崩溃的原因是什么。在左侧,它告诉我这是因为objc_expcetion_throw。我该怎么调试呢? 感谢
答案 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
是您使用的异常变量的名称。