dyld`__abort_with_payload: без сообщения об ошибке

Когда я запускаю свое приложение с XCode, у меня происходит сбой, но нет ошибки

Приложение только останавливается на этой теме

Что я могу сделать, чтобы получить больше информации о проблеме?

32 ответа

Если вы используете пользовательские фреймворки, вам нужно поместить их в раздел "Embedded Binaries", расположенный в проекте Xcode на вкладке Target / General.

Для меня простой Clean а также Rebuild разобрался. Надеюсь, поможет.

Эта проблема появилась после обновления системы до бета-версии macOS 10.15.2. Отключение "Thread Sanitizer" решило проблему (Xcode 11.2). Теперь я не могу использовать Thread Sanitizer, и мне нужно ждать следующего обновления ОС.

Добавление фреймворка во встроенный список бинарных активов исправило это. Вот как выглядит настройка стороннего фреймворка в окончательной форме в графическом интерфейсе XCode как Embedded Framework (Xcode 9.2, лично мне больше нравится визуальный след от крошки;-)): введите описание изображения здесь

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

Использование встроенных бинарных файлов не позволяет конечному пользователю добавлять платформу независимо от вашего приложения (или вы делаете это с помощью установщика). В случае с iPhone (iOS) это невозможно, но в macOS это возможно, но может быстро запутаться.

Для конечного пользователя гораздо приятнее просто перетащить приложение, чтобы установить его на macOS, и именно здесь встраивание становится преимуществом. Встраивание также позволяет избежать классических "конфликтов DLL", связанных с использованием внешних версий вашей платформы. (дисковое пространство дешево, время моего клиента драгоценно).

Чтобы ответить на первоначальный вопрос "Что я могу сделать, чтобы получить больше информации о проблеме?", Эта ветка форума Apple предлагает очень простой совет: просто запустите приложение, вызывающее сбой, вне XCode (то есть остановите его в XCode, а затем запустите его вручную на своем компьютере). устройство). Это создаст журнал сбоев, содержащий более подробную информацию о том, что произошло. Затем вы можете просмотреть этот журнал из меню Окна XCode / Устройства и симуляторы -> Просмотреть журналы устройств.

Наконец-то решено!

Для меня работало сделать фреймворк "необязательным", а не "обязательным".

Надеюсь, это поможет!

Я исправил ошибку в своем проекте только сейчас!
Если вы используете swift framework в проекте Object-C, я советую вам изменить настройки сборки.
Всегда встраивайте опцию Swift Standard Libraries в YES. как это:

надеюсь, что это было полезно для вас.

Xcode 11.1, Выключить Do not Embed, Embed & Sign хороший вариант.

Спасибо @mkonovalov, @William Cerniuk

Снятие флажка "Guard Malloc" в диагностике сработало у меня. Смотрите изображение для настройки

1) Продолжите выполнение, чтобы увидеть, не появляется ли какое-либо сообщение в отладчике, например, "MyFramework.framework" не найдено. Если это так, следуйте этому обсуждению: Библиотека OS X Framework не загружена: "Изображение не найдено" Для меня этот ответ сработал: /questions/26649624/biblioteka-os-x-framework-ne-zagruzhena-izobrazhenie-ne-najdeno/26649625#26649625

2) Убедитесь, что вы добавили свои двоичные файлы через раздел "Вставить двоичные файлы".

3) Убедитесь, что вы включили подпись фреймворков в разделе фазы сборки.

4) Убедитесь, что встроенные фреймворки не являются символическими ссылками.

5) Вы можете сделать связанные фреймворки необязательными, а не обязательными на этапе "Связать бинарный файл с библиотеками". Это скажет iOS не искать эти платформы во время запуска. Но в любом случае вам нужно исправить ошибки, чтобы использовать эти фреймворки!

6) Проверьте, все ли записи info.plist хороши. В моем случае я использовал файл Mac info.plist для iOS. Он искал какой-нибудь xib-файл, которого не было в проекте iOS.

7) Сделайте чистку и постройку после любого такого изменения. Это необходимо, потому что xcode не копирует / не изменяет эти файлы, если они уже существуют.

8) Удалите приложение с iPad, а затем установите. По той же причине, что и 7.

Я столкнулся с такой же проблемой с Xcode 11.3 и macOS Catalina 10.15.2. Приложение работало на устройстве, но не на симуляторе. Кажется, есть проблема с Simulator, и временным решением является отключение Thread Sanitizer.

Обратитесь: https://forums.developer.apple.com/message/397978

Надеюсь это поможет.

Я только что пропустил применение "Конфиденциальность - описание использования камеры" в info.plist.

Не знаю, помогает ли эта информация кому-то еще, хотя...

У меня была похожая проблема, которая была решена из-за отсутствия спецификации разрешения в plist (как бы странно это ни было...)

Я пытался использовать AVCaptureDevice, и он просто завис при запуске (мое приложение было очень минимальным)

Добавление -Privacy - Camera Usage Descriptionв info.plist решил это для меня.

Иногда это происходит, когда вы используете системные платформы, которые доступны только из более поздней версии iOS, чем ваша целевая версия. Это можно исправить, пометив эту связанную структуру как необязательную.

Например, проект, нацеленный на iOS 11 и использующий функцию автозаполнения AuthenticationServices for iOS 12, завершится сбоем на iOS 11 описанным способом.

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

dyld: символ не найден: _OBJC_CLASS_$_SFSafariViewController

Для моей конкретной ошибки, добавление SafariServices.framework в Targets -> Build Phases -> "Link Binary With Libraries" решило проблему. Хотя у вас, вероятно, нет той же конкретной ошибки и разрешения, полезно проверить журнал отладки на наличие подсказок.

У меня была эта проблема, и я не имел успеха с ответами. Я использовал пользовательскую структуру, которая подключалась к устройствам Bluetooth. Таким образом, сбой произошел из-за того, что я пропустил применение «Конфиденциальность — описание постоянного использования Bluetooth» в файле info.plist.

Оставьте это здесь, если это поможет кому-то еще. Убедитесь, что все ваши поля разрешений настроены в plist.

У меня была такая ситуация после обновления Xcode до v10.2.1 и swift до v5.0. Если вы используете carthage + RxSwift, то новый RxSwift использует RxRelay.framework, Перейдите в каталог /Carthage/Build, найдите этот фреймворк и перетащите его в свой проект. Не забудьте также добавить его в свой carthage copy-frameworks сценарий:$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework

Решено благодаря: /questions/47503043/dyldabortwithpayload-bez-soobscheniya-ob-oshibke/47503057#47503057

Если вы используете инфраструктуру, написанную на Swift, в приложении Objective-C, вам необходимо включить набор инструментов Swift в приложение, которое использует среду.

Я нашел способ сделать это - создать фиктивный файл swift в приложении, чтобы XCode распознал swift и соответствующим образом добавил его в проект. Затем вы можете удалить фиктивный файл.

Я был бы рад, если бы кто-нибудь знал о лучшем способе явного добавления swift в проект target-c без добавления файла swift.

Я столкнулся с той же проблемой. Установка "Всегда встраивать стандартные библиотеки Swift" в "Да" в настройках сборки моей цели работала для меня.

Если вы используете каркас компоновки Carthage, после перетаскивания каркаса в свой проект вы должны добавить его в General/Embeded Binaries.

Чтобы добавить к длинному списку встреч с этой ошибкой, она возникает, когда я использую XCode12.2 Beta 2, развертываю на моем Mac под управлением MacOS 10.15.5 с целью развертывания, установленной на MacOS 11.0. Эта ситуация возникла, потому что я пробовал приложение Mac Catalyst Tutorial для добавления боковой панели. Переключение цели на MacOS 10.15.5 устранило ошибку и правильно запустило приложение.

Также, если вы используете настраиваемые фреймворки, убедитесь, что вы установили тип Mach-O на статическую библиотеку. Я где-то читал, что IOS не позволяет дилиб. В любом случае это сработало для меня.

Я столкнулся с этой проблемой в iOS 14.5 при воспроизведении / реализации ATT (прозрачность отслеживания приложений), и мне еще предстоит добавить описание использования в info.plist о том, почему необходимо отслеживание пользователей.

Сбой приложения при включении настроек «Разрешить приложениям запрашивать отслеживание» (при отключении все работает хорошо)

Сбой в Xcode не дал никаких подсказок, кроме

      libsystem_kernel.dylib`__abort_with_payload: (SIGABRT)
CoreSimulator 757.5 - Device: iPhone 11 (29AD27B2-6EC0-4B9C-8C8C-C5450695A19C) - Runtime: iOS 14.5 (18E182) - DeviceType: iPhone 11

Использование ответа из /questions/47503043/dyldabortwithpayload-bez-soobscheniya-ob-oshibke/47503057#47503057 и получение журнала сбоев с фактического устройства дали эту подсказку, которая была чрезвычайно полезной.

      Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Termination Reason: TCC, This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSUserTrackingUsageDescription key with a string value explaining to the user how the app uses this data.
Triggered by Thread:  1

Я нахожу правильный способ решить это.

Убедитесь, что AppleWWDRCA.cer будет установлен системный режим по умолчанию, тогда он будет работать:

На самом деле, у меня была проблема с 11.3.1, и Thread Sanitizer уже был отключен, как упоминалось выше. В моем случае проблема заключалась в том, что у меня были разные версии xCode в моей папке приложения, например

/Applications/xcode11.3.1/Xcode.app
/Applications/xcode11.3/Xcode.app
/Applications/xcode10.1/Xcode.app

а также

/Applications/Xcode.app - was 11.2

Мне потребовалось 2 дня, чтобы понять, что система сборки по умолчанию смотрит на /Applications/Xcode.app. Таким образом, перенос 11.3.1 в /Applications/Xcode.app, наконец, решает проблему

Я исправил это, изменив «Вставить и подписать» на «Вставить без подписи» в разделе « Общие» > « Платформы, библиотеки и встроенный контент».

Я исправил ошибку в своем проекте.
1. Проверьте другие темы, когда произошла ошибка. Я обнаружил, что моя ошибка связана с камерой.

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

  1. Добавьте конфиденциальность камеры в файле Info.plist.
    1) Откройте файл info.plist.
    2) Добавьте новый ключ под названием "Конфиденциальность - описание использования камеры" и введите строку, которая описывает, зачем приложению нужна камера. Описание будет отображаться, когда вашему приложению необходимо использовать конфиденциальность.

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

Я не думал, что это относится ко мне, потому что я не использовал камеру, но это было так.

Многие ответы ссылаются на добавление описания использования в . Я не знал, что есть еще много случаев, когда необходимо описание использования (помимо только камеры), см. эту ссылку.

Ссылка перечисляет эти службы как требующие описания использования или вызовет эту ошибку:

Календарь, Контакты, Напоминания, Фото, Совместное использование Bluetooth, Микрофон, Камера, Местоположение, Здоровье, HomeKit, Медиатека, Движение, CallKit, Распознавание речи, SiriKit и ТВ-провайдер.

Добавить запись в Info.plist, начните вводить «Конфиденциальность» в качестве ключа, и вы увидите всплывающие окна со всеми доступными параметрами.

Та же проблема произошла и со мной. У меня была бета-версия iOS 14, и проблема была исправлена, когда я обновил ее до официальной версии.

У меня только что возникла та же проблема, и причина была в том, что я отозвал свои сертификаты разработчика и создал новые с Xcode 10 после свежего обновления для MacOS Mojave (для некоторых он удалил все учетные данные и устарел некоторые сертификаты брелок).

Итак, все, что мне нужно было сделать, это удалить установленные приложения с моего устройства и снова запустить их через XCode, чтобы он установил на своем устройстве нужный новый профиль обеспечения:)

Другие вопросы по тегам