Xcode iOS 仪器:

Posted

技术标签:

【中文标题】Xcode iOS 仪器:【英文标题】:Xcode iOS Instruments: 【发布时间】:2016-04-18 16:04:17 【问题描述】:

我的应用程序只有在运行仪器时才会崩溃。重现案例是 100%,但在运行没有工具的发布版本或运行调试版本时不会崩溃。当 Instruments 运行发布版本时,我无法一步一步地弄清楚到底是什么崩溃了。当构建崩溃时,它会默默地执行,我找不到任何输出。它在仪器中运行分配时崩溃。

我很难追踪正在发生的事情,是否有我不知道的仪器模式会捕获此错误并向我报告具体情况?

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

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

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 ````

【问题讨论】:

编辑方案并更改 Instruments 构建以使用 Debug 构建而不是 Release。 谢谢,在调试中运行时它仍然没有遇到断点(我几乎是一个仪器新手)。不知道接下来要尝试什么。 您的发布配置使用什么优化? 另外请注意,即使您不能暂停,您也可以登录到控制台,这样您就可以看到您的进度。您应该能够获得(并提供给我们)比目前您的应用程序在崩溃时所做的更好的想法。 很好奇这是怎么发生的。这是我要做的,添加尽可能多的日志,然后从 Window->Devices->[Your Device] 查看它,检查停止的位置。并一一排除外部库,看看是哪一个导致了崩溃。 【参考方案1】:

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

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

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

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

我现在可以使用工具对我的应用进行内存调查。

【讨论】:

以上是关于Xcode iOS 仪器:的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 6.3 不再打开仪器

Xcode 5.0.1 iOS 7.0.3 仪器命令行工具出错

仪器无法在 Xcode 4.4 的真实 iOS 设备中运行 GUI 测试脚本

无法使用 iOS6 启动仪器

在 Xcode for iOS 中导入 Points of Interest 仪器的路标代码名称

错误:在 xcode 时间分析器仪器上分析 iOS 应用程序时无法在设备上找到设备的时间戳