为什么'模拟背景提取'从Xcode 8开始导致崩溃(libsystem_kernel.dylib`mach_msg_trap)?

时间:2016-09-21 18:09:01

标签: ios xcode8

我在macOS Sierra,Xcode 8上,每当我尝试在实际的iOS 10设备上模拟背景提取时都会崩溃。使用模拟器时不会发生这种情况。这发生在所有项目中,包括那些刚刚创建的项目。

    libsystem_kernel.dylib`mach_msg_trap:
    0x18cfec164 <+0>: movn   x16, #0x1e
    0x18cfec168 <+4>: svc    #0x80
->  0x18cfec16c <+8>: ret   (Thread 1: signal SIGSTOP)

我没有任何其他iOS设备可以测试;是其他人经历过这个吗?

6 个答案:

答案 0 :(得分:19)

我正在使用设备运行Xcode 8.1 - 它没有崩溃,但是它遇到了一个你无法找到/编辑/删除的断点。

我去调试&gt;继续,它按预期继续。

答案 1 :(得分:15)

你并不孤单 - 我也遇到过这种情况。真烦人我刚刚提交了一个错误。

答案 2 :(得分:5)

正如其他人所指出的那样。它不是崩溃,而是由系统触发的自动断点。正如eskimo所解释的here

  

那么,为什么它会在mach_msg_trap中停止?目标是给你一个   有机会在后台获取处理代码中设置断点,所以   Xcode强制您的应用停止,就像您点击暂停一样   按钮(调试&gt;暂停)。它在mach_msg_trap中停止,因为那是   你的应用程序暂停在主要线程的位置   背景。简而言之,当你做一个Debug&gt;模拟后台提取   并在mach_msg_trap中停止:

     
      
  1. 这是预期的行为
  2.   
  3. 这不是任何问题的迹象
  4.   
  5. 您可以通过Debug&gt;安全地继续执行。继续
  6.   

就个人而言,我认为它更像是一个错误,而不是一个功能。

答案 3 :(得分:2)

它没有崩溃,有些东西正在发出停止执行应用程序的信号。在不知道模拟提取是如何发生的情况下,我只能猜测为什么 - 它可能是模拟的一部分或应用程序处理它的方式的副作用。 Xcode用于支持永久禁用信号中断(SIGPIPE总是我的祸根),但现在几个版本都没有用。

答案 4 :(得分:0)

  

目标 - &gt;能力 - &gt;背景模式 - &gt; ON

并选中[音频,AirPlay和画中画]

它对我有用。

答案 5 :(得分:-1)

我刚遇到这个问题,它与从我的后端和投射类型中提取数据有关。

如果您不熟悉firebase,请查看最后两行。如果你是,我在这里修理它。我的数据看起来像这样

"Node" : {
      "SubNode" : {
        "-KoB8OMIO0PLiTs8fUkJ" : {
      "ImageName" : "DSC05833-2.jpg",
      "price" : 100,
    },
    "-KoB8Rh9PtSMaMUlaD91" : {
      "ImageName" : "DSC05780-2.jpg",
      "price" : 0,
    },

我的代码拉。

ref.child("Node").child("SubNode").child(uniqueidID).observeSingleEvent(of: DataEventType.value, with: { (snapshot) in
        if snapshot.childrenCount > 0
        {
            let jsonPhoto = snapshot.value as? [String: AnyObject]
            let mageName = jsonPhoto?["ImageName"] as! String            
            photoObj.imagePrice = jsonPhoto?["price"] as! Double //error, Swift didn't catch, just froze my app
        }
})

如果值为100则有效 - >双倍,然后由于某种原因,当我投下0时,firebase失败了 - &gt;双

所以我修好了我的演绎方式

我原来有这个:

photoObj.imagePrice = jsonPhoto?["price"] as! Double // caused error

到..

 photoObj.imagePrice = jsonPhoto?["price"] as? Double ?? 0.00 //fixed error