(null) libc++abi.dylib: завершение вызывает исключение

Я использую Xcode 4.5PR и iOS 6beta 2.

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

Я использовал окно отладки, функция которого вызвала это исключение, но оно показывает

0x38dda960:  push   {r4, r5, r6, r7, lr}

Как я могу найти проблему? Как я могу это исправить?


person Masaru Kitajima    schedule 02.07.2012    source источник
comment
поставить точку останова на все исключения.   -  person CodaFi    schedule 02.07.2012
comment
КодаФай, спасибо. Я добавляю точки останова на все исключения, используя окно отладки. И он остановился в точке, упомянутой выше.   -  person Masaru Kitajima    schedule 02.07.2012
comment
Вы случайно не вызывали метод -setOpaque, не так ли?   -  person CodaFi    schedule 02.07.2012
comment
@CodaFi, спасибо за быстрый ответ. Я не использую метод setOpaque и не меняю непрозрачность в StoryBoard. Это моя трассировка стека. Она остановилась на второй строке 'libobjc.A.dylib`objc_exception_throw:' '0x38dda960: push {r4, r5, r6, r7, lr}'   -  person Masaru Kitajima    schedule 02.07.2012
comment
Нет, трассировка стека похожа на список методов, которые привели к сбою. Нравится этот   -  person CodaFi    schedule 02.07.2012
comment
У меня была такая же ошибка, когда в стеке были только main и UIApplicationMain. Затрудняет отслеживание.   -  person Old McStopher    schedule 18.07.2012
comment
У меня точно такая же проблема 0x32745960: push {r4, r5, r6, r7, lr} это происходит после обновления до xcode до 4.6   -  person user4951    schedule 07.02.2013
comment
Вы также видите PFManagedObject_coerceValueForKeyWithDescription?   -  person user4951    schedule 07.02.2013


Ответы (11)


Если вы ничего не меняли, это может быть просто связано с бета-версией iOS 6 в ее нынешнем виде.

Однако для тех, кто ищет эту ошибку в Google, вот несколько общих советов:

1) Это может быть симулятор, который вы выбрали для создания того же кода:

Если вы не меняли исходный код, убедитесь, что ваша схема по-прежнему указывает на тот же симулятор, с которым она работала в последний раз. (Например, это может привести к попытке представить контроллер модального представления (presentModalViewController:), но при этом забыть условно использовать всплывающее окно для iPad.)

2) Если трассировка стека и консоль бесполезны:

Иногда в стеке находятся только main и UIApplicationMain, что затрудняет отслеживание того, что пошло не так в вашем исходном коде. Скорее всего, это признак того, что что-то не работает в собственном методе фреймворка, который вы вызываете или вызываете.

Если в консоли не указан метод или конкретный объект, а трассировка стека не указывает ни на какие методы из ваших собственных классов, постарайтесь сузить выполнение как можно ближе к точке, в которой возникает исключение. При выборе точек останова в темноте я склонен использовать подход бинарного поиска, выбирая опорную точку и перемещаясь вверх и вниз по порядку выполнения и выбирая новую «промежуточную» точку по мере необходимости.

person Old McStopher    schedule 18.07.2012
comment
Ответ Кита - реальная сделка. - person Jonny; 15.08.2013

Установите точку останова на исключениях C++, чтобы найти, где они выбрасываются.

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

person Keith    schedule 10.02.2013
comment
Это спасение жизни! Такая точка останова позволила мне определить реальную проблему. - person Jonauz; 04.07.2016

Убедитесь, что вы используете предварительную версию xcode для разработчиков (4.5) и по привычке не открывали версию выпуска (4.3.3) и определенно имеете бета-версию iOS, чтобы соответствовать, если вы не обновили настройки проекта, вы не можете запустить приложение на бета-версии iOS 6 после того, как вы обновите настройки проекта до iOS 6, приложение больше не будет работать на устройствах iOS 5.xx друг на друге.

person Develomentional    schedule 21.07.2012

Это происходит здесь, когда я устанавливаю ограничение на объект i.s.o. назначение его супервизии

person BarryK88    schedule 17.09.2012

Причина возникновения этой ошибки...

У меня возникла эта ошибка после изменения имени некоторых переменных iboutlet в моих файлах .h и .m, но не в ссылках раскадровки для этих переменных. После переделки ссылок все снова заработало нормально. Надеюсь, это может помочь некоторым из вас.

person DevonDahon    schedule 15.10.2012

Иногда это может произойти, если вам просто не хватает библиотеки — я делал быстрый пример приложения с MKMapView, и эта ошибка возникла до того, как я добавил MapKit.framework в свой проект.

person cowfaboo    schedule 29.11.2012

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

person Shiv Kumar Singh    schedule 24.12.2012

Это происходило со мной и исчезло, когда я установил -ObjC в «Другие флаги компоновщика».

person funkybro    schedule 17.06.2013

Это исключение может возникать по разным причинам. Лучший способ найти точную основную причину — посмотреть на console. Там вы найдете такой текст:

*** lorem ipsum lorem ipsum lorem ipsum
*** First throw call stack: (0x1d16012 0x16c3e7e 0xa4ef96 0x607704 0x6079a2 0x606876 0x617cb5 0x618beb 0x60a698 0x2b81df9 0x2b81ad0 0x1c8bbf5 0x1c8b962 0x1cbcbb6 0x1cbbf44 0x1cbbe1b 0x60617a 0x607ffc 0x1d1d 0x1c45) libc++abi.dylib: terminate called throwing an exception

Здесь текст lorem ipsum перед First throw call stack точно укажет на причину возникновения исключения. Исправьте эту проблему, и вы готовы к работе.

person Saurabh Hooda    schedule 14.08.2013

Эта ошибка обычно возникает, когда вы вручную удаляете раскадровку из своего проекта и переназначаете свой контроллер просмотра для использования без раскадровки. Убедитесь, что ваш контроллер представления добавлен к корневому контроллеру представления вашего окна в вашем AppDelegate и что контроллер представления инициализируется без имени пера (поскольку вы бы удалили это при удалении раскадровки) - И САМОЕ ВАЖНОЕ удалите строки из вашего pList файл, сообщающий приложению, что должен существовать файл раскадровки, например «Базовое имя основного файла раскадровки (iPad)» или «Базовое имя основного файла раскадровки (iPhone)». Как только они исчезнут, ваше приложение перестанет искать раскадровку, и вы станете золотым, как золотистый ретривер!

person ColossalChris    schedule 20.05.2014

У меня это застряло на некоторое время, а затем я обнаружил, что могу получить ТОЧНЫЙ стек трассировки исключения с помощью установка точки останова для всех исключений.

person Walty Yeung    schedule 06.12.2014