как я могу сделать мой xcode stacktrace читаемым снова? - PullRequest
1 голос
/ 25 октября 2011

У меня проблема с отладкой моего проекта xcode.Когда мое приложение падает, я получаю нечитаемую трассировку стека, например:

2011-10-25 10:03:29.966 fruehstueck[2541:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
*** First throw call stack:
(0x352918bf 0x303ce1e5 0x351e620f 0x2c381 0x46f6d 0x3138f7ff 0x3139bc39 0x3139baa9 0x3139b98f 0x3139b211 0x3139af53 0x3138f673 0x3138f349 0x3a347 0x3aa87 0x351eb435 0x3147473f 0x3137050f 0x3136ff01 0x313564ed 0x31355d2d 0x3717be13 0x35265553 0x352654f5 0x35264343 0x351e74dd 0x351e73a5 0x3717afed 0x31384743 0x2e01 0x2dc0)

Сам код не останавливается в моем исходном коде, а в строке "int retVal = ..." с полученным сигналом SIGBART.

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

Может кто-нибудь сказать мне, могу ли я вернуть свою использованную трассировку стека, где, по крайней мере, я могу посмотреть, в какой строке вылетело мое приложение?

Спасибо заранее, Маверик

Ответы [ 3 ]

1 голос
/ 25 октября 2011

Вы не назначаете делегата приложения для UIApplicationMain. Это умышленно?

Если нет, и если вы используете Xcode 4.2 и iOS5 SDK, ваш основной файл должен выглядеть следующим образом:

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
1 голос
/ 25 октября 2011

Это довольно просто:

-[__NSArrayM insertObject:atIndex:]: object cannot be nil

Если вы хотите отследить его и знать шаги, вам не понадобится много времени, чтобы угадать, какой вызов "insertObject" получает нулевой указатель.

Для получения правильной трассировки стека пробовали ли вы очистить сборку?Кроме того, попробуйте с контрольными точками на.(и убедитесь, что вы не используете бета-версию XCode).

0 голосов
/ 08 ноября 2012

Из того, что я видел, вы не можете больше символизировать стек вызовов, но вы можете обойти эту проблему.Проверьте этот ответ, если вы не возражаете изменить код своего приложения или использовать графический стек вызовов в Debug Navigator окна Xcode.

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