单元测试在 Xcode 7 中崩溃
Unit tests crashing in Xcode 7
当单元测试在Xcode7(GM和7.0.1)中为运行时,测试通过;但在那之后,它立即崩溃了。
Xcode 调试控制台显示以下错误:
libc++abi.dylib: 以 std::__1::system_error 类型的未捕获异常终止:互斥锁失败:参数无效
日志也显示了很多这样的错误:
测试套件 'MyTests' 于 2015-10-05 09:20:54.028 通过。
在 0.001 (0.002) 秒内执行了 1 次测试,0 次失败(0 次意外)
测试套件 'Selected tests' 于 2015-10-05 09:20:54.028 通过。
在 0.001 (0.003) 秒内执行了 1 次测试,0 次失败(0 次意外)
分析:/Users/ldupont/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/PlayerIOS.build/Objects-normal/x86_64/SCPlayerTabularCollectionView.gcda:无法打开:没有那个文件或目录
分析:/Users/ldupont/Documents/Fuego/Player_ios/PlayerIOS/ObjectiveC.gcda:无法打开:没有那个文件或目录
分析:/Users/testuser/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/PlayerIOS.build/Objects-normal/x86_64/SCPlayerTabularCollectionView.gcda:无法打开:没有那个文件或目录
分析:/Users/testuser/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/PlayerIOS.build/Objects-normal/x86_64/SCPlayerTabularCollectionView.gcda:无法打开:没有那个文件或目录
分析:/Users/testuser/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/PlayerIOS.build/Objects-normal/x86_64/SCPlayerTabularCollectionView.gcda:无法打开:没有那个文件或目录
分析:/Users/testuser/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/
我的项目设置如下:
主要目标和测试目标:
启用代码覆盖支持:是
生成遗留测试覆盖率文件:否
仪器程序流程:NO
我也尝试将以上所有设置为 NO,但这没有帮助。
刚刚找到导致崩溃的原因 - 我使用的内部库是使用项目设置编译的 'Instrument Program Flow'= YES,以生成基于 gcov 的代码覆盖率。这在 Xcode 7 中不再支持,它放弃了旧的 gcov 文件格式支持,支持新的中间格式 — profdata。
我获得了该库的新版本,并将 Instrument 设置设置为 NO,然后崩溃消失了,所有单元测试都通过了。希望这对面临同样问题的其他人有所帮助。
Xcode 调试控制台显示以下错误: libc++abi.dylib: 以 std::__1::system_error 类型的未捕获异常终止:互斥锁失败:参数无效
日志也显示了很多这样的错误:
测试套件 'MyTests' 于 2015-10-05 09:20:54.028 通过。 在 0.001 (0.002) 秒内执行了 1 次测试,0 次失败(0 次意外)
测试套件 'Selected tests' 于 2015-10-05 09:20:54.028 通过。 在 0.001 (0.003) 秒内执行了 1 次测试,0 次失败(0 次意外)
分析:/Users/ldupont/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/PlayerIOS.build/Objects-normal/x86_64/SCPlayerTabularCollectionView.gcda:无法打开:没有那个文件或目录
分析:/Users/ldupont/Documents/Fuego/Player_ios/PlayerIOS/ObjectiveC.gcda:无法打开:没有那个文件或目录
分析:/Users/testuser/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/PlayerIOS.build/Objects-normal/x86_64/SCPlayerTabularCollectionView.gcda:无法打开:没有那个文件或目录
分析:/Users/testuser/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/PlayerIOS.build/Objects-normal/x86_64/SCPlayerTabularCollectionView.gcda:无法打开:没有那个文件或目录
分析:/Users/testuser/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/PlayerIOS.build/Objects-normal/x86_64/SCPlayerTabularCollectionView.gcda:无法打开:没有那个文件或目录
分析:/Users/testuser/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/
我的项目设置如下: 主要目标和测试目标: 启用代码覆盖支持:是 生成遗留测试覆盖率文件:否 仪器程序流程:NO
我也尝试将以上所有设置为 NO,但这没有帮助。
刚刚找到导致崩溃的原因 - 我使用的内部库是使用项目设置编译的 'Instrument Program Flow'= YES,以生成基于 gcov 的代码覆盖率。这在 Xcode 7 中不再支持,它放弃了旧的 gcov 文件格式支持,支持新的中间格式 — profdata。
我获得了该库的新版本,并将 Instrument 设置设置为 NO,然后崩溃消失了,所有单元测试都通过了。希望这对面临同样问题的其他人有所帮助。