Подтвердить что ты не робот

Как отслеживать причину SIGABRT

Я показываю код для этой проблемы, например, для целей, но на самом деле мой вопрос: как я должен отслеживать и понимать ошибки SIGABRT? Я прочитал этот вопрос: sigabrt без сообщения об ошибке, однако я не думаю, что это относится к моей проблеме.

Пример, который я покажу ниже, очевидно, не является проблемой xib, и предыдущие времена получение SIGABRT было скорее связано с необработанными исключениями. Я пробовал использовать GDB bt, но это не помогает. Нет ли более полного дампа для просмотра? Я также использовал NSZombie, но я действительно не понимаю, как его использовать, поэтому, если это ваш ответ, предоставьте ссылку на документацию о том, как я должен получать от нее релевантные данные.

Вот мой пример: я пытаюсь использовать Core Data. Мой проект изначально не был настроен, поэтому мне пришлось вручную добавить его, что я сделал, перейдя в мой проект > "Сборка фаз" > "Связывание двоичных файлов с библиотеками" > щелчок по плюсу и добавление CoreData.framework

Затем я создал свою модель данных, выбрав "Файл" > "Создать" > "Модель данных". Я создал немало атрибутов и что он

После этого я добавил подходящие методы для делегата приложения (я сделал это, создав новый проект с помощью Core Data, а затем скопировав методы):

//code removed, as its not needed for the question/answer

После этого я просто попытался сохранить значение управляемому объекту (еще раз код скопировал из реализации по умолчанию с новым проектом):

//code removed, as its not needed for the question/answer

Но все, что я получаю, когда я выполняю метод addTime, - это ошибка SIGABRT.

xcode error

4b9b3361

Ответ 1

SIGABRT поднимается, когда объект получает невыполненное сообщение. Сколько предупреждений имеет ваше приложение? Попробуйте проплыть через них и найдите те, которые предупреждают вас, "какой-то объект может не реагировать на какой-то селектор", если вы очищаете свое приложение от всех этих, вы, скорее всего, получите его работу правильно.

EDIT: ответ на комментарии ниже, которые очень полезны:

ok, здесь идет тяжелая артиллерия - вы пытались использовать контрольные точки? открыто шестую вкладку в проводнике проекта, в нижнем левом углу + → Добавить контрольную точку исключения → Готово. Это добавит обработчик исключений, который остановит ваше приложение на самом вызове метода, который выйдет из строя приложение.

EDIT: Начиная с xCode 5.0 > Вам больше не нужно указывать, какое исключение будет использовать ваша точка останова при создании точки останова. Вам просто нужно нажать + → Добавить контрольную точку исключения, и вы хорошо.

введите описание изображения здесь