CoreBluetooth [ERROR] XPC连接中断,重置

时间:2013-03-01 02:08:14

标签: iphone core-bluetooth

当我尝试使用我的iphone应用程序连接蓝牙LE时。它使CoreBluetooth [ERROR] XPC连接中断,重置。 为什么。?

4 个答案:

答案 0 :(得分:3)

“CoreBluetooth [ERROR] XPC连接中断,重置”意味着blued蓝牙守护程序已崩溃。您可以通过打开Console并查看系统日志和DiagnosticReports来查看更多详细信息。

在我的情况下,看起来蓝色中的异常发生是因为SerialNumber在某处是零。我没有解决方法并已将其报告给bugreport.apple.com(错误16075785)。

实际导致异常的方法是确定性的,但因计算机而异。在具有内部蓝牙4.0芯片的一台计算机上,调用-[CBPeripheral discoverCharacteristics:forService:]。在另一台配备蓝牙4.0 USB适配器的计算机上,可以拨打-[CBPeripheral writeValue:forCharacteristic:type:]-[CBPeripheral setNotifyValue:forCharacteristic:]

'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: SerialNumber)'
    *** First throw call stack:
    (
        0   CoreFoundation                      0x00007fff91b1141c __exceptionPreprocess + 172
        1   libobjc.A.dylib                     0x00007fff9231de75 objc_exception_throw + 43
        2   CoreFoundation                      0x00007fff91a0c62e -[__NSDictionaryM setObject:forKey:] + 1102
        3   blued                               0x0000000103d5d422 blued + 336930
        4   blued                               0x0000000103d4b115 blued + 262421
        5   IOBluetooth                         0x00007fff97354093 -[IOBluetoothL2CAPChannel processIncomingData:] + 576
        6   IOBluetooth                         0x00007fff97353e3c -[IOBluetoothL2CAPChannel handleMachMessage:] + 45
        7   Foundation                          0x00007fff94d98e35 __NSFireMachPort + 94
        8   CoreFoundation                      0x00007fff91a42d04 __CFMachPortPerform + 388
        9   CoreFoundation                      0x00007fff91a42b69 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 41

编辑2014-02-27:我的特定崩溃发生是因为设备GATT表包含服务180A«设备信息»中的特征2A25«序列号字符串»的无效非UTF8值,并且蓝色守护程序正在创建NSString *从它并将其放入NSMutableDictionary。一个临时的解决方法是使setObject:forKey:通过跳转到最近的ret命令永远不会失败:

sudo /Applications/Xcode.app/Contents/Developer/usr/bin/lldb <<PID of blued>>
breakpoint set --fullname "-[__NSDictionaryM setObject:forKey:]" --condition "$rdx == 0"
breakpoint command add 1
register write pc `$pc+967`
continue
DONE

答案 1 :(得分:2)

也发生在我身上 - 特别是在启动CBCentralManager(CM)扫描时 当我停止CM扫描并重新启动它时 - 通常会解决。 我担心这是CoreBluetooth实现中的一个错误

答案 2 :(得分:0)

在向CBPeripheralManager添加服务时,我遇到了这个问题。事实证明我的方法中有一个讨厌的拼写错误(没有编译器错误或警告)来获得一些特征ID。因此,使用nil id创建了一些特性。我得到的只是iOS 7.1.1下的日志中的这个错误,当查看我的设备日志时发现了BTServer崩溃报告。我的带有iOS 8.1.2的设备没有将其记录到控制台,因此找到问题可能更糟。

答案 3 :(得分:0)

无意中发现此错误的另一个原因:USB集线器以及连接或电源不良导致我的调试环境损坏。这意味着它确实不规则地报告错误。

更多关于我的Odyssee:通常我直接连接到构建机器,但是当我遇到这个问题时,它是通过我的显示器的USB集线器连接的。我重新启动了Xcode,重新启动了buildmachine但没有成功。 有趣的事实:相同的设置现在正常工作3天,但在星期五(今天)连接到调试器是不情愿的。

希望这个暗示不是一次奇迹; - )