Сбои XCode 6.1 и 6.1.1 в точке останова отладчика (симулятор)
У меня, как и у многих других, были проблемы со сбоем XCode 6+. Я получаю сбои SourceKit, а также полные сбои приложения. По прихоти я решил попробовать 6.1.1 (центр для разработчиков), и это было еще хуже, точка останова отладчика теперь приводит к полному сбою приложения. Поэтому я сказал "забудь об этом" и вернулся к версии 6.1, но у меня все еще возникают сбои при установке точки останова отладчика.
Очевидно, этот сбой с точкой останова влияет только на симулятор, физические устройства устанавливаются и останавливаются на точках останова без проблем. Weird!
Это абсолютно безумно!! Кто-нибудь еще получает это?
Вещи, которые я пробовал:
- удалить /Application/Xcode.app/ & ~/Library/Developer/*
- очистка проекта
- перезагрузил мой ноутбук
- точка останова для выполнения на физическом устройстве (<<<<====== Это работает!!!)
- зарезать курицу и разлить кровь
Заголовок стека трассировки:
Process: Xcode [7904]
Path: /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier: com.apple.dt.Xcode
Version: 6.1 (6604)
Build Info: IDEFrameworks-6604000000000000~2
App Item ID: 497799835
App External ID: 752282650
Code Type: X86-64 (Native)
Parent Process: launchd [185]
Responsible: Xcode [7904]
User ID: 501
Date/Time: 2014-11-25 12:32:49.348 -0800
OS Version: Mac OS X 10.9.5 (13F34)
Report Version: 11
Anonymous UUID: E22980F9-B80B-F985-200A-FE471C623C56
Crashed Thread: 23 <DBGLLDBSessionThread (pid=7957)>
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000001409bdfd0
VM Regions Near 0x1409bdfd0:
Stack 000000014093b000-00000001409bd000 [ 520K] rw-/rwx SM=COW thread 22
--> STACK GUARD 00000001409bd000-00000001409be000 [ 4K] ---/rwx SM=NUL stack guard for thread 23
Stack 00000001409be000-0000000140a40000 [ 520K] rw-/rwx SM=COW thread 23
Application Specific Information:
ProductBuildVersion: 6A1052d
...
Thread 23 Crashed:: <DBGLLDBSessionThread (pid=7957)>
0 libsystem_pthread.dylib 0x00007fff90eb82cf __mtx_droplock + 17
1 libsystem_pthread.dylib 0x00007fff90eb88f3 pthread_mutex_unlock + 60
2 com.apple.LLDB.framework 0x000000011808f8be lldb_private::Mutex::Locker::~Locker() + 22
3 com.apple.LLDB.framework 0x00000001180ed55f GDBRemoteCommunication::CheckForPacket(unsigned char const*, unsigned long, StringExtractorGDBRemote&) + 2423
4 com.apple.LLDB.framework 0x00000001180ec99e GDBRemoteCommunication::WaitForPacketWithTimeoutMicroSecondsNoLock(StringExtractorGDBRemote&, unsigned int) + 88
5 com.apple.LLDB.framework 0x00000001181eeb1b GDBRemoteCommunicationClient::SendPacketAndWaitForResponse(char const*, unsigned long, StringExtractorGDBRemote&, bool) + 91
6 com.apple.LLDB.framework 0x00000001180f7574 ProcessGDBRemote::DoReadMemory(unsigned long long, void*, unsigned long, lldb_private::Error&) + 216
7 com.apple.LLDB.framework 0x00000001181a452a lldb_private::Process::ReadMemoryFromInferior(unsigned long long, void*, unsigned long, lldb_private::Error&) + 94
8 com.apple.LLDB.framework 0x0000000118171889 lldb_private::ProcessStructReader::ProcessStructReader(lldb_private::Process*, unsigned long long, lldb_private::ClangASTType) + 561
9 com.apple.LLDB.framework 0x0000000118169082 lldb_private::SwiftLanguageRuntime::ClassMetadata::ClassMetadata(lldb_private::SwiftLanguageRuntime&, unsigned long long) + 354
10 com.apple.LLDB.framework 0x000000011816625d lldb_private::SwiftLanguageRuntime::GetMetadataForLocation(unsigned long long) + 531
11 com.apple.LLDB.framework 0x00000001181690d1 lldb_private::SwiftLanguageRuntime::ClassMetadata::ClassMetadata(lldb_private::SwiftLanguageRuntime&, unsigned long long) + 433
12 com.apple.LLDB.framework 0x000000011816625d lldb_private::SwiftLanguageRuntime::GetMetadataForLocation(unsigned long long) + 531
13 com.apple.LLDB.framework 0x00000001181690d1 lldb_private::SwiftLanguageRuntime::ClassMetadata::ClassMetadata(lldb_private::SwiftLanguageRuntime&, unsigned long long) + 433
14 com.apple.LLDB.framework 0x000000011816625d lldb_private::SwiftLanguageRuntime::GetMetadataForLocation(unsigned long long) + 531
15 com.apple.LLDB.framework 0x00000001181690d1 lldb_private::SwiftLanguageRuntime::ClassMetadata::ClassMetadata(lldb_private::SwiftLanguageRuntime&, unsigned long long) + 433
16 com.apple.LLDB.framework 0x000000011816625d lldb_private::SwiftLanguageRuntime::GetMetadataForLocation(unsigned long long) + 531
17 com.apple.LLDB.framework 0x00000001181690d1 lldb_private::SwiftLanguageRuntime::ClassMetadata::ClassMetadata(lldb_private::SwiftLanguageRuntime&, unsigned long long) + 433
18 com.apple.LLDB.framework 0x000000011816625d lldb_private::SwiftLanguageRuntime::GetMetadataForLocation(unsigned long long) + 531
...
1 ответ
За эти годы было предложено много решений для такого странного поведения XCode, поэтому я также включил все эти шаги... однако я добавил несколько своих собственных, которые (когда они делались вместе и по порядку) никогда не удалось решить каждую странную проблему XCode, с которой я столкнулся...
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: Выполнение ВСЕХ этих шагов (по порядку) может быть КРИТИЧЕСКИМ... Я понимаю, что некоторые из них на первый взгляд кажутся излишними или не должны иметь значения, но мой опыт показал, что каждый шаг играет роль в получении XCode вернулся в надлежащее рабочее состояние. Поэтому я НЕ рекомендую пропускать какие-либо шаги или менять их порядок.
С учетом вышесказанного, если вы обнаружите, что нужно настроить шаги, приведенные ниже, оставьте комментарий... XCode постоянно меняется, так что эти шаги также могут нуждаться в изменении со временем.
После сбоя XCode:
1) Если симулятор все еще работает, обязательно выберите IOS Simulator-> Сбросить содержимое и настройки, прежде чем закрывать его.
2) Закрыть симулятор (CMD-Q)
3) Окно -> Органайзер -> Удалить производные данные
4) При отладке на ЛЮБЫХ устройствах удалите приложение с устройства и полностью перезагрузите устройство.
5) Запустить XCode
6) Удалить все точки останова
7) Product -> (удерживая нажатой клавишу Alt/ Option) Очистить папку сборки
8) Продукт -> Чистый
9) Снова закройте XCode с помощью XCode->Quit XCode (ПРИМЕЧАНИЕ. Должен быть ВЫХОДНЫЙ ВЫХОД, чтобы XCode мог правильно выполнить полный цикл выключения / очистки)
10) перезагрузите свой Mac
11) Запустить Xcode
12) Если вы работаете в симуляторе, выберите другое устройство для симуляции, чем при его сбое.
13) Сделайте тестовый запуск вашего приложения (без точек останова)
14) Если все идет хорошо, начните добавлять точки останова (Все исключения всегда хорошая отправная точка).
ОБРАЩАЙТЕСЬ С МАРИЙ (иначе "Маневр Корбомита"): Если выполнение всего вышеперечисленного не сработало, повторите все вышеописанные шаги снова, но вставьте следующий шаг между шагами 9 и 10: 9А) Удалите приложение XCode и переустановите XCode.