使用exc_bad_access崩溃(代码= exc_i386_gpflt)

时间:2018-12-31 05:52:21

标签: objective-c xcode macos

Objective-C; Mac OS 10.10或更高版本 在我的XCode Mac库项目中,我遵循下面链接中的Apple开发人员库代码中的功能 RawDeviceAdded ,以处理添加了不同Pid的原始USB设备。 https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/USBBook/USBDeviceInterfaces/USBDevInterfaces.html

在快速接连插入设备时,该项目崩溃,并带有以下文本行: 线程1 exc_bad_access(code = exc_i386_gpflt) 。显示在此行:

result = (*plugInInterface)->QueryInterface(plugInInterface,
                        CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID),
                        (LPVOID *)&dev); 

但最后执行的行是下面的 printf 行:

if ((vendor != kOurVendorID) || (product != kOurProductID1) || (product != kOurProductID2) )
        {
            printf("Found unwanted device (vendor = %d, product = %d)\n",
                    vendor, product);
            (void) (*dev)->Release(dev);
            continue;
        }

当我较慢地插入设备或将睡眠添加到功能中时,它似乎可以正常工作而不会崩溃,但是,我想以正确的方式对其进行修复。 发生了什么以及如何正确处理它?。

0 个答案:

没有答案