如何调试 SwiftUI 应用程序中的“无声”崩溃

问题描述 投票:0回答:1

我已经经历了“无声”应用程序崩溃已经有一段时间了。这是相当可重复的,并且在 SwiftUI 中从一个屏幕转换到另一个屏幕时会发生:

ZStack {
    switch(router.currentScreen) {
        case .screenA:
            ScreenA()   
        case .screenB:
            ScreenB()
    }
}
.animation(.easeOut(duration: 0.5), value: router.currentScreen)

*注意 - 当从屏幕 A 转到屏幕 B 时,并非每次都会发生这种情况。但是当应用程序崩溃时,总是从屏幕 A 转到屏幕 B 时发生,所以问题不在于上面的代码 - 我'我只是将其包含在上下文中。问题是 Xcode 中没有断点命中,没有堆栈跟踪,并且控制台中没有输出。如果我在连接到调试器时运行,我会收到此错误:

Lost connection to the debugger. Domain: IDEDebugSessionErrorDomain Code: 22
User Info: {
    DVTErrorCreationDateKey = "2024-03-25 19:04:52 +0000";
    IDERunOperationFailingWorker = DBGLLDBLauncher;
}

如果我没有连接到调试器,应用程序就会像我说的那样死掉。我无法在任何地方找到崩溃的任何记录,所以我不知道为什么或什么代码导致了它。

我尝试过的:

  • 设置“所有 Objective-C 异常”断点(永远不会得到 绊倒)
  • 设置“所有运行时问题”断点(永远不会 绊倒)
  • Xcode -> 设备和模拟器 -> 打开最近的日志(无 相关日志)
  • Xcode -> 设备和模拟器 -> 打开控制台(空 对于我的设备)
  • 在 Xcode 调试导航器中监视内存。它 此时从大约 60 MB 增加到大约 120 MB,但是 似乎不足以导致崩溃。
  • 产品 -> 分析(“成功”,但没有其他信息)
  • 仪器 -> 泄漏(未检测到泄漏)
  • 给蒂姆·库克发短信(没有回复)

我还能做什么来找出我的应用程序崩溃的原因???

swift xcode swiftui xcode-debugger
1个回答
0
投票

您可能想尝试地址消毒剂。这通常可以帮助识别这些奇怪的崩溃。您可以通过单击顶部栏上的方案并选择“编辑方案”来找到它。

有关如何使用它的更多信息可以在这里找到: https://developer.apple.com/documentation/xcode/diagnosing-memory-thread-and-crash-issues-early

© www.soinside.com 2019 - 2024. All rights reserved.