Как отслеживать причину 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]()
Ответы
Ответ 1
SIGABRT поднимается, когда объект получает невыполненное сообщение. Сколько предупреждений имеет ваше приложение? Попробуйте проплыть через них и найдите те, которые предупреждают вас, "какой-то объект может не реагировать на какой-то селектор", если вы очищаете свое приложение от всех этих, вы, скорее всего, получите его работу правильно.
EDIT: ответ на комментарии ниже, которые очень полезны:
ok, здесь идет тяжелая артиллерия - вы пытались использовать контрольные точки? открыто шестую вкладку в проводнике проекта, в нижнем левом углу + → Добавить контрольную точку исключения → Готово. Это добавит обработчик исключений, который остановит ваше приложение на самом вызове метода, который выйдет из строя приложение.
EDIT: Начиная с xCode 5.0 > Вам больше не нужно указывать, какое исключение будет использовать ваша точка останова при создании точки останова. Вам просто нужно нажать + → Добавить контрольную точку исключения, и вы хорошо.
![введите описание изображения здесь]()