Как устранить сбой модульного теста, когда покрытие кода включено в Xcode 11.4
Мы получаем сбой после исключения всех модульных тестов, когда включено покрытие кода. Пожалуйста, найдите трассировку стека ниже
Crashed Thread: 0 ReceiverMainThread Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: EXC_I386_GPFLT
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [41136]
Application Specific Information:
CoreSimulator 704.12 - Device: iPad Pro (12.9-inch) (3rd generation) (C0064E72-B310-4A5B-82BE-BCC12D3E4D46) - Runtime: iOS 13.4 (17E255) - DeviceType: iPad Pro (12.9-inch) (3rd generation)
Thread 0 Crashed:: ReceiverMainThread Dispatch queue: com.apple.main-thread
0 com.ios.Dev 0x000000010ea6f368 initializeValueProfRuntimeRecord + 56
1 com.ios.Dev 0x000000010ea733aa writeOneValueProfData + 170
2 com.ios.Dev 0x000000010ea7323b lprofWriteDataImpl + 683
3 com.ios.Dev 0x000000010ea72f7d lprofWriteData + 109
4 com.ios.Dev 0x000000010ea7151a writeFile + 714
5 com.ios.Dev 0x000000010ea7118f __llvm_profile_write_file + 1007
6 libsystem_c.dylib 0x00007fff51a65a38 __cxa_finalize_ranges + 326
7 libsystem_c.dylib 0x00007fff51a65d56 exit + 48
8 com.apple.dt.XCTest 0x00000001124ea721 _XCTestMain + 2709
9 libXCTestBundleInject.dylib 0x000000011138abfa __RunTests_block_invoke_2 + 13
10 com.apple.CoreFoundation 0x00007fff23da1a9c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
11 com.apple.CoreFoundation 0x00007fff23da1193 __CFRunLoopDoBlocks + 195
12 com.apple.CoreFoundation 0x00007fff23d9bf83 __CFRunLoopRun + 995
13 com.apple.CoreFoundation 0x00007fff23d9b884 CFRunLoopRunSpecific + 404
14 com.apple.GeoServices 0x00007fff38b5ac1a GSEventRunModal + 139
15 com.apple.UIKitCore 0x00007fff48c19220 UIApplicationMain + 1605
16 com.ios.Dev 0x000000010e7be223 main + 430 (main.m:125)
17 libdyld.dylib 0x00007fff519b910d start + 1
Этот сбой происходит только в XCode 11.4, если включено покрытие кода. Если покрытие кода отключено, оно работает нормально, но нам нужно покрытие кода после выполнения модульных тестов. В Xcode 11.3 модульные тесты выполнялись нормально с включенным покрытием кода. Может ли кто-нибудь сообщить нам решение этой проблемы. Заранее спасибо.
Изменить: разрешение
Для нас изменение типа Macho-O-Type одной из зависимостей с перемещаемого объектного файла на статическую библиотеку решило проблему. Но не уверен, что это единственная причина проблемы, поскольку причин может быть несколько.
3 ответа
Попробуйте отключить покрытие кода. это помогает в моем случае
У меня точно такая же проблема, и я все еще страдаю от Xcode 11.4.1
. Я также видел, как вы @Arjuna писали на форуме разработчиков Apple:
https://forums.developer.apple.com/thread/131988
Я пока не нашел решения, но думаю, что это связано с функциями, представленными в Xcode 11.4
https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_release_notes
После Releases Notes
у нас есть:
When building a scheme that has been converted to use test plans and whose active test plan has code coverage enabled, Xcode now includes code coverage instrumentation when building for the ‘Run’ action, in addition to the ‘Test’ action. This matches the behavior of building schemes which don’t use test plans and have code coverage enabled, and avoids unnecessary rebuilds when alternating between running and testing actions. (57367856)
Я почти уверен, что это как-то связано с этим, но я все еще не могу найти способ исправить это.