我有一个仅在运行仪器时崩溃的应用程序。 repro的情况是100%,但在没有工具的情况下运行发行版时或在运行调试时都不会崩溃。在Instruments运行一个发行版本时,我无法逐步找出崩溃的确切原因。当构建崩溃时,它会静默地运行,没有任何输出可以找到。它仅在乐器中运行分配时崩溃。

我很难跟踪正在发生的事情,我不知道有没有一种仪器模式可以捕获此错误并向我报告具体情况?

我在Stackoverflow上读过类似的问题,但这些问题对我没有帮助。

崩溃就像僵尸一样,但仅在仪器运行时发生,并且“启用僵尸检测”并不表示僵尸。

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000008
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
CoreSimulator 209.19 - Device: iPad Air 2 - Runtime: iOS 9.3 (13E230) - DeviceType: iPad Air 2

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libswiftCore.dylib              0x0000000109f03dc0 swift_retainCount + 0
1   liboainject.dylib               0x000000010335d223 oa_swift_tryRetain + 297
2   libswiftCore.dylib              0x0000000109f14d69 -[SwiftObject retainWeakReference] + 9
3   libobjc.A.dylib                 0x00000001098b8b6b weak_read_no_lock + 89
4   libobjc.A.dylib                 0x00000001098b94c6 objc_loadWeakRetained + 104
5   libobjc.A.dylib                 0x00000001098b94f2 objc_loadWeak + 15
6   com.apple.Foundation            0x0000000108da975c empty + 35
7   com.apple.Foundation            0x0000000108da96fa -[NSConcreteHashTable dealloc] + 46
8   libobjc.A.dylib                 0x00000001098b9afe objc_object::sidetable_release(bool) + 232
9   liboainject.dylib               0x000000010335c6e9 ___swapMethods_block_invoke_4 + 272 ````

最佳答案

使用iOS 10模拟器在Xcode 9上发生的事情与我相同,默认是iOS 11模拟器,但我也想在iOS 10上进行测试。

到目前为止,很糟糕,任何仪器操作都导致我的应用程序崩溃,其回溯与使用iOS 10模拟器时显示的回溯几乎相同。

我尝试了很多事情,最后我认为Xcode 9 Instrument与较旧的模拟器SDK可能不兼容。

因此,我切换到了iOS11模拟器,这是Xcode 9上的默认模拟器,它解决了我的Instruments问题。

现在,我可以使用仪器对应用程序进行内存调查了。

10-06 07:18