EXC_BAD_ACCESS ошибка, брошенная в xcode - PullRequest
0 голосов
/ 28 августа 2011

Мое приложение аварийно завершает работу во время работы и приводит к следующей ошибке в той же точке кода. Мое исследование показывает, что это проблема памяти, но я не уверен, почему. Я не разработчик приложений (скорее веб-разработчик), у которого есть приличное понимание Objective-C. Я также не создавал это приложение (Длинная история).

#import <UIKit/UIKit.h>

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

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

ПРИМЕЧАНИЕ. Приложение не выдавало эту ошибку, пока я не исправил некоторые проблемы с утечкой памяти. Не уверен, поможет ли это.

Ответы [ 2 ]

3 голосов
/ 28 августа 2011

Правильным направлением является использование инструментов (поставляется с Xcode в папке / Developer / Applications). Если это EXC_BAD_ACCESS, ваша лучшая ставка - инструмент Зомби.

0 голосов
/ 28 августа 2011

В зависимости от того, используете ли вы Xcode 4 или более раннюю версию, ответ SO можно найти на Как включить NSZombie в Xcode? может быть полезно;в вашем вопросе об ошибке сообщается на самом верхнем уровне, поэтому, как вы думали, не очень полезно рассказывать об источнике ошибки.

Обратная связь в два цента, которую я могу вам сообщить, заключается в том, что я впервые столкнулся с чем-то похожимЯ попробовал статический анализатор;следуя его сообщениям, я попытался устранить потенциальные утечки, что привело к преждевременному освобождению ресурса.Инструмент полезен, но для его освоения требуется больше времени, чем может показаться в начале.Он выглядит как кнопка, но это не совсем так, поскольку решение «попытаться исправить» может выглядеть правильно, даже если оно не так (вы просто вышли за пределы его возможностей для анализа, совершив более «тонкую» ошибку;)).

...