当我尝试使用我的iphone应用程序连接蓝牙LE时。它使CoreBluetooth [ERROR] XPC连接中断,重置。 为什么。?
答案 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天,但在星期五(今天)连接到调试器是不情愿的。
希望这个暗示不是一次奇迹; - )