Быстрое расширение клавиатуры 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 > Присоединить к процессу: прикрепить клавиатуру (это должен быть первый процесс)

теперь ваши точки останова будут работать. но, к сожалению, нет выхода журнала. Я надеюсь, что это временное решение вашей проблемы