Swift键盘扩展SIGQUIT,执行被中断,原因:EXC_BREAKPOINT

时间:2016-12-21 10:13:04

标签: ios swift custom-keyboard

当我尝试构建并运行我的键盘扩展程序时,它有时只会崩溃Thread 1: signal SIGQUIT

我无法重现错误。有时我可以构建和运行我的应用程序,但大多数时候键盘才会退出。这发生在实际设备上。在模拟器中,它不会打开键盘并显示Waiting to Attach

控制台最初不会输出任何错误。但是,如果我在Debug导航器中将下拉列表更改为View UI Hierachy,我会得到以下描述:

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.

我还截了当时的截图。

enter image description here

我做错了什么,怎么能阻止我的键盘扩展程序在运行时一直退出?它实际上是一个如描述中所述的错误吗?

2 个答案:

答案 0 :(得分:2)

<强>声明

xCode 8.2.1中的某些内容似乎已损坏且调试程序未正确附加到正确的进程,或者托管进程未正确加载新代码。

这不是永久解决方案,而是临时解决方法。

解决方法

我已经能够通过以下步骤解决此问题。

  1. 杀死使用键盘的任何进程(重要!)
  2. 使用调试器启动应用程序,以便将最新代码部署到设备
  3. 导航至设置&gt;一般&gt;键盘&gt;等
  4. 删除自定义键盘
  5. 重新添加自定义键盘
  6. 再次调试应用程序
  7. 这样做的原因是因为删除键盘会导致托管扩展的进程导致Xcode附加到新的二进制文件。

答案 1 :(得分:2)

据我所知,这是Xcode 8.2.1中的一个错误。因为在更新之前我的自定义键盘工作得很好。 这是一个临时解决方案。

  1. 像往常一样运行您的代码!
  2. 调出键盘直到出现错误(SIGQUIT)!
  3. 转到xcode&gt; debug&gt;分离
  4. 再次转到Xcode&gt; debug&gt;附加到进程:附加键盘(应该是第一个进程)
  5. 现在,您的断点将起作用。但遗憾的是没有日志输出!我希望它能暂时解决你的问题