Сбой приложения .... objc_exception_throw - PullRequest
7 голосов
/ 29 февраля 2012

Мое приложение продолжает зависать в одной точке.Это не говорит мне, почему, точка останова исключения происходит в

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

, поэтому я понятия не имею, что вызвало сбой.С левой стороны, это говорит мне, что это было из-за objc_expcetion_throw.Как я могу отладить это?БЛАГОДАРЯ

Ответы [ 3 ]

6 голосов
/ 29 февраля 2012

В подобных случаях я создам точку останова, которая нарушает все исключения.Это точка останова по умолчанию, которая создается, если вы просто нажимаете кнопку добавления на вкладке точки останова.

С этой точкой останова XCode остановится в точке исключения, и я вижу строку кода, где это произошлосо стеком.

Я бы выложил изображение этого, но мне не хватает представителя!

5 голосов
/ 29 февраля 2012

Используйте @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]));

Наконец, вы всегда можете разбить исключения для объектов:

Product->debug->create symbolic breakpoint
Symbol: objc_exception_throw
1 голос
/ 29 февраля 2012

Следуйте советам Ричарда и внедрите обработчик uncaughtException.Установите точку останова в обработчике.Когда возникает исключение, введите его в консоли вывода:

po [except callStackSymbols]

Это должно дать вам более подробную информацию о происхождении исключения.

Примечание: except - это имяпеременная исключения, которую вы использовали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...