Быстрое расширение клавиатуры SIGQUIT, выполнение прервано, причина: EXC_BREAKPOINT
Когда я пытаюсь создать и запустить расширение моей клавиатуры, он иногда просто сбой с Thread 1: signal SIGQUIT
.
Я не могу воспроизвести ошибку. Иногда я могу создавать и запускать свое приложение, но большую часть времени клавиатура просто уходит. Это происходит на самом устройстве. В симуляторе он не открывает мою клавиатуру и говорит Waiting to Attach
.
Консоль сначала не выводит никаких ошибок. Однако, если я изменил раскрывающийся список для просмотра UI Hierachy в навигаторе Debug, я получаю следующее описание:
Details: No plist data for fetching view hierarchy: error evaluating expression "(id)[(Class)objc_getClass("DBGViewDebuggerSupport_iOS") fetchViewHierarchyWithOptions:(id)[(Class)objc_getClass("NSDictionary") dictionaryWithObjects:(id)[(id)[(id)[(Class)objc_getClass("NSArray") arrayWithObject:(id)[(Class)objc_getClass("NSNumber") numberWithBool:1]] arrayByAddingObject:(id)[(id)[(Class)objc_getClass("NSArray") arrayWithObject:@"_UIVisualEffectBackdropView"] arrayByAddingObject:@"_UIBackdropEffectView"]] arrayByAddingObject:(id)[(Class)objc_getClass("NSNumber") numberWithBool:0]] forKeys:(id)[(id)[(id)[(Class)objc_getClass("NSArray") arrayWithObject:@"DBGViewDebuggerUseLayersAsSnapshots"] arrayByAddingObject:@"DBGViewDebuggerEffectViewsToSnapshotAsImage"] arrayByAddingObject:@"DBGViewDebuggerAlwaysEncodeLayers"]]]": error: Execution was interrupted, reason: EXC_BREAKPOINT (code=1, subcode=0x18daddc34).
The process has been returned to the state before expression evaluation.
Method: -[DBGAbstractViewDescriber handleFetchedViewInfo:fetchError:resultHandler:]
Please file a bug at http://bugreport.apple.com with this warning message and any useful information you can provide.
Я также сделал скриншот процессов.
![введите описание изображения здесь]()
Я делаю что-то не так, и как я могу предотвратить, что мое расширение клавиатуры будет закрыто все время при запуске? Это на самом деле ошибка, о которой говорится в описании?
Ответы
Ответ 1
ОТКАЗ
Кажется, что что-то в xCode 8.2.1 сломано, а отладчик неправильно подключен к правильному процессу или хостинг-процесс неправильно загружает новый код.
Это не постоянное решение, а временное обходное решение.
РЕШЕНИЕ
Мне удалось решить эту проблему, выполнив следующие шаги.
- Убейте любой процесс, который использует вашу клавиатуру (важно!)
- Запустите приложение с помощью отладчика, чтобы последний код был развернут на устройстве.
- Перейдите в "Настройки" > "Основные" > "Клавиатуры" и т.д.
- Удаление пользовательской клавиатуры
- Повторно добавьте пользовательскую клавиатуру.
- Отладить приложение еще раз
Причина этого в том, что удаление клавиатуры убивает процесс, в котором размещается расширение, позволяющее Xcode присоединяться к новому двоичному файлу.
Ответ 2
Как я понимаю, это ошибка в Xcode 8.2.1. потому что перед обновлением моя пользовательская клавиатура работала очень хорошо.
это временное решение.
- Запустите свой код, как всегда!
- Поднимите клавиатуру до появления ошибки (SIGQUIT)!
- Перейти к xcode > debug > отсоединить
- Goto again Xcode > debug > Присоединить к процессу: прикрепить клавиатуру (это должен быть первый процесс)
теперь ваши точки останова будут работать. но, к сожалению, нет выхода журнала. Я надеюсь, что это временное решение вашей проблемы