dyld`__abort_with_payload: Без повідомлення про помилку


85

Коли я запускаю програму з XCode, у мене трапляється збій, але помилок не виникає

Програма просто зупиняється на цій темі

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

Що я можу зробити, щоб отримати більше інформації про проблему?

Відповіді:


107

Якщо ви використовуєте власні фреймворки, вам потрібно помістити його всередину розділу «Вбудовані двійкові файли», що знаходиться в проекті Xcode на вкладці Цільове / Загальне.


1
У мене є власний фреймворк, і він перерахований у розділі "Вбудовані двійкові файли" у проекті Xcode у розділі Ціль> Загальне. Я все ще отримую цю проблему, коли намагаюся запустити свої модульні тести. Нещодавно я оновив частини свого коду Swift до Swift 3 (з 2). Якщо це допомагає ...
Mario A Guzman

@MarioAGuzman Як ви це виправили? Я також стикаюся з проблемою після переходу до Swift 3
iOS

@iOS На жаль, я не мав реального виправлення. Проблема вирішилася завдяки нещодавно випущеному Xcode 8.3.
Mario A Guzman

Чому це потрібно розміщувати у розділі Вбудовані двійкові файли? Я намагаюся використовувати ObjectiveDropboxOfficial.framework. Я отримував цю помилку, помістив її у Embedded, і вона її "виправила". Однак я знову дістав його, і він залишається «виправленим». Інші цілі, які налаштовані тим же AFAICT, не вдаються. Документи встановлення в dropbox не говорять про те, що потрібно вставляти в Embedded Frameworks.
Jim Leask,

Це допомогло. Також переконайтеся, що у вас немає дублікатів у розділі "Пов’язані фреймворки та бібліотеки". Коли ви додаєте його до розділу Embedded, він автоматично додає його до розділу Linked.
milesmeow

59

Для мене простий Cleanі Rebuildрозібрався. Сподіваюся, це допоможе.


81
Очистити, очистити папку збірки, видалити вміст папки Виведені дані, встановити Pod (де це можливо), перезапустити Xcode, перезапустити машину; потім намазати на двері трохи баранячої крові на все необхідне
johnnyclem

1
Мені теж допомогло !!
Дмитро Грех,

Видалення каталогу та отримання останнього коміту з git не допомогло, але очистити та відновити допомогло lol
え る ま る

8
У моєму випадку мені довелося зав’язати чилі та лимон на рамі своїх дверей.
Нареш,

1
Мені теж довелося пожертвувати своїм первістком, але це вдалося!
Андор Немет,

25

введіть тут опис зображенняЦя проблема виникла після оновлення системи до macOS 10.15.2 beta. Вимкнення "Thread Sanitizer" вирішило проблему (Xcode 11.2). Зараз я не можу використовувати Thread Sanitizer і мені потрібно чекати наступного оновлення ОС.


6
Цей пост відповідає на вихідні запитання, коли проблема виникає в симуляторах Xcode 11.3 після оновлення до Mac 10.15.2. Здається, помилка Apple, див. Forums.developer.apple.com/thread/126891
Vadim Motorine

19

Додавання фреймворку до вбудованого списку двійкових активів це виправило. Ось як виглядає налаштування зовнішнього фреймворку в остаточному вигляді в графічному інтерфейсі Xcode як вбудований фреймворк (Xcode 9.2, особисто мені більше подобається візуальний слід хлібної крихти ;-)): введіть тут опис зображення

Чи навмисно Apple збила час виконання, щоб хоч якось повідомити розробника про проблему, через яку ви не можете використовувати фреймворки, що не належать Apple, як просто зв’язані фреймворки в розробці iOS? Краще було б, щоб це виглядало як помилка збірки, я думаю ... з кнопкою із написом "рухайся!"

Використання вбудованих двійкових файлів утримує кінцевого користувача від необхідності додавати Framework незалежно від вашої програми (або ви працюєте з установчиком). У випадку з iPhone (iOS) це неможливо, але на macOS це можливо, але може швидко зіпсувати.

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


Невелике оновлення. Тепер Xcode 10.1 дозволяє перетягувати спеціальний фреймворк із розділу «Пов’язати двійковий файл з бібліотеками», де він переходить за замовчуванням, у розділ «Копіювати ресурси пакета», де він повинен бути ... Він більше не просто копіює посилання але рухає його також. Знімок екрану тут: stackoverflow.com/questions/24993752 / ...
Вільям Cerniuk

13

Я виправив помилку у своєму проекті щойно!
Якщо ви використовуєте швидкий фреймворк у проекті Object-C, я раджу вам змінити налаштування збірки.
Завжди вставляти опцію Swift Standard Libraries у ТАК. подобається це:введіть тут опис зображення

сподіваюся, це було вам корисно.


Це спрацювало для мене, навіть якщо у моєму проекті (мабуть) немає швидкого коду.
Jim75

XCode змінено на значення назад на Ні, і я про це забув. Дякую :)
SeikoTheWiz

13

Нарешті вирішено!

Мені вдалося зробити фреймворк "необов'язковим" замість "обов'язковим".

Сподіваюся, це допоможе!


супер людина, я боровся з цією проблемою 1,5 дня. навіть знайшов цю приємну матрицю twitter.com/isupportmatrix, змінивши її на необхідну,
вирішену і

а також він працював лише з налаштуваннями у меню Файл -> Налаштування
проекту-

10

Xcode 11.1, вимкніть Do not Embed, Embed & Signце варіант хороший.

0

222

Дякую @mkonovalov, @William Cerniuk


1
Працював у мене. +1
абхімуралідаран

1
На цьому кроці в обов’язковому порядку ви намагаєтесь вбудувати свій власний фреймворк у свій додаток.
Akash Bhardwaj

6

1) Продовжуйте виконання, щоб побачити, чи не відображається якесь повідомлення в налагоджувачі, наприклад "MyFramework.framework", не знайдено. Якщо це так, дотримуйтесь цього обговорення: Бібліотека OS X Framework не завантажена: «Зображення не знайдено» Для мене ця відповідь спрацювала: https://stackoverflow.com/a/44796734/4060763

2) Переконайтеся, що ви додали свої двійкові файли через розділ "Вбудувати двійкові файли".

3) Переконайтеся, що ви включили підписання фреймворків у розділі фази побудови.

4) Переконайтесь, що вбудовані фреймворки не є символічними посиланнями.

5) Ви можете зробити зв’язані фреймворки необов’язковими, замість того, щоб потрібно на етапі "Пов'язати двійковий файл з бібліотеками". Це скаже iOS не шукати ці фреймворки під час запуску. Але в будь-якому випадку вам потрібно виправити помилки, щоб використовувати ці фреймворки!

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

7) Робіть чистку та збирання після будь-якої такої зміни. Це потрібно, оскільки xcode не копіює / не змінює ці файли, якщо вони вже існують.

8) Видаліть програму з iPad, а потім встановіть. Те саме, що і 7.


6

Зняття прапорця "Guard Malloc" у діагностиці спрацювало для мене. Див. Зображення для налаштувань


2
Guard Malloc, щоб бути правильним. Хтось знає, чому це виправляє аварію?
Mojo66,

1
Ви також можете спробувати очистити проект, а потім запустити знову або просто перезапустити Xcode. Такі помилки просто дратують і нагадують помилки в Xcode
Karanveer Singh

5

Щоб відповісти на вихідне запитання "Що я можу зробити, щоб отримати більше інформації про проблему?", Ця тема форуму Apple надає дуже просту пораду: просто запустіть свою програму, що аварійно завершує роботу, поза XCode (тобто зупиніть її з XCode, а потім запустіть її вручну на своєму пристрій). Це створить журнал збоїв, що містить більше деталей про те, що сталося. Потім ви можете переглянути цей журнал у меню вікна XCode / Пристрої та симулятори -> Переглянути журнали пристроїв.


4

Я щойно пропустив застосування "Конфіденційність - Опис використання камери" у списку info.plist.

Не знаю, чи ця інформація допомагає комусь іншому, хоча ...


4

Я зіткнувся з такою ж проблемою з Xcode 11.3 та macOS Catalina 10.15.2. Додаток працював добре на пристрої, але не на Simulator. Здається, у Simulator є проблема, і вирішення проблеми полягає у відключенні Thread Sanitizer.

Посилання: https://forums.developer.apple.com/message/397978#397978

Сподіваюся, це допомагає.


3

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

dyld: Символ не знайдено: _OBJC_CLASS _ $ _ SFSafariViewController

На мою конкретну помилку, додавши SafariServices.framework у Цілі -> Фази побудови -> "Пов’язати двійковий файл з бібліотеками", вирішено проблему. Хоча у вас, мабуть, не однакові помилки та роздільна здатність, перевірка журналу налагодження на наявність підказок корисна.


2

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

Вирішено завдяки: https://stackoverflow.com/a/52550148/2493555


1

Якщо ви використовуєте фреймворк, написаний на Swift у програмі Objective-C, вам потрібно включити ланцюжок інструментів Swift до програми, яка споживає фреймворк.

Я знайшов, як це зробити, це створити фіктивний швидкий файл у програмі, щоб XCode швидко розпізнав і належним чином додав його до проекту. Потім ви можете видалити фіктивний файл.

Я б дуже хотів, якби хтось знав кращий спосіб явно додати swift до проекту-c без додавання швидкого файлу.


1

якщо ви використовуєте структуру побудови Carthage, перетягнувши фреймворк до свого проекту, ви повинні додати його до загальних / вбудованих двійкових файлів.


1

Я знаходжу правильний спосіб її вирішення.

Переконайтеся, що AppleWWDRCA.cerвстановлено режим системи за замовчуванням, тоді він буде працювати:

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


Працював і у мене.
dev_shanghai

1

Я стикався з тим самим питанням. Мені вдалося встановити для параметра «Завжди вбудовувати швидкі стандартні бібліотеки» значення «Так» у налаштуваннях збірки моєї цілі.


1

У мене була подібна проблема, яка була вирішена відсутністю специфікації дозволу в plist (як би це не дивно було ...)

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

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


1

Щоб додати до довгого списку зустрічей з цією помилкою, вона виникає, коли я перебуваю на XCode12.2 Beta 2, що розгортається на моєму Mac під управлінням MacOS 10.15.5 із ціллю розгортання, встановленою на MacOS 11.0. Ця ситуація сталася тому, що я випробовував програму Mac Catalyst Tutorial щодо додавання SideBar. Переключення цілі на MacOS 10.15.5 усунуло помилку та запустило програму належним чином.


0

Я виправив свою помилку в своєму проекті.
1. Перевірте інші теми, коли сталася помилка. Я виявив, що моя помилка стосується камери.

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

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

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


0

У мене щойно виникла та сама проблема, і причина, пов’язана з тим, що я скасував свої сертифікати розробника та створив нові за допомогою Xcode 10, після свіжого оновлення macOS Mojave (для деяких він видалив усі облікові дані для входу та застарів деякі сертифікати брелоків).

Отже, все, що мені потрібно було зробити, це видалити встановлені програми з мого пристрою і знову запустити їх через Xcode, щоб він міг встановити правильний новий профіль забезпечення на моєму пристрої :)


0

Іноді це трапляється, коли ви використовуєте системні фреймворки, доступні лише з пізнішої версії iOS, що до вашої цільової версії. Це може бути виправлено, позначивши цей зв’язаний фреймворк як необов’язковий.

Наприклад, проект, орієнтований на iOS 11 і використовуючи функцію AuthenticationServices для iOS 12 Автозаповнення, зазнає збою в iOS 11 описаним способом.


0

Насправді, у мене виникла проблема з 11.3.1, і Thread Sanitizer вже був вимкнений, як було зазначено вище. У моєму випадку проблема полягала в тому, що я мав різні версії xCode у моїй папці Application, як це

/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 нарешті вирішить проблему


0

Також якщо ви використовуєте власні фреймворки, переконайтеся, що ви встановили тип Mach-O як статичну бібліотеку. Я десь читав, що IOS не дозволяє dylib. У будь-якому випадку це спрацювало для мене.


0

Те саме сталося і зі мною. У мене був iOS 14 Beta, і проблема полягала у виправленні, коли я оновив його до офіційної версії.


-1

Я відчув цю проблему лише під час роботи на реальному пристрої (iPhone SE). Проект тренажера працював, як очікувалося.

Я спробував усі виправлення саме з цього потоку і звідси: Бібліотека OS X Framework не завантажена: 'Зображення не знайдено' Жоден із тих не працював у мене.

Для мене проблема була вирішена після перезапуску iPhone (sic!).

Я зробив:

  • чиста папка побудови,
  • чисті похідні дані,
  • видалити програму з пристрою,
  • перезавантажити пристрій

І це нарешті працює. :)

Якщо будь-яке інше рішення не вдається, не забудьте випробувати його.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.