SwiftUI - OUTLINED_FUNCTION_5 (EXC_BREAKPOINT) 崩溃

4

我的应用程序崩溃了 - 但我甚至不知道如何调试此问题。

背景

我尝试盲目更改一些东西,以查看是否至少更改了堆栈跟踪,但是Crashlytics为所有用户报告的问题几乎相同(OUTLINED_FUNCTION_5)。 我还在整个应用程序中使用FirebaseFirestore和ViewModels方法(StateObjects)。

问题

我该如何找出这个轮廓函数是什么?我能否以某种方式获取其实际名称或代码中的位置?

堆栈跟踪

0 SwiftUI OUTLINED_FUNCTION_5 + 84044
1 SwiftUI OUTLINED_FUNCTION_5 + 70408
2 SwiftUI OUTLINED_FUNCTION_242 + 6312
3 SwiftUI OUTLINED_FUNCTION_15 + 868
4 SwiftUI OUTLINED_FUNCTION_28 + 480
5 SwiftUI OUTLINED_FUNCTION_52 + 1356
6 SwiftUI OUTLINED_FUNCTION_52 + 1500
7 UIKitCore _UIUpdateSequenceRun + 84
8 UIKitCore schedulerStepScheduledMainSection + 172
9 UIKitCore runloopSourceCallback + 92
10 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
11 CoreFoundation __CFRunLoopDoSource0 + 176
12 CoreFoundation __CFRunLoopDoSources0 + 244
13 CoreFoundation __CFRunLoopRun + 836
14 CoreFoundation CFRunLoopRunSpecific + 612
15 GraphicsServices GSEventRunModal + 164
16 UIKitCore -[UIApplication _run] + 888
17 UIKitCore UIApplicationMain + 340
18 SwiftUI OUTLINED_FUNCTION_895 + 2424
19 SwiftUI block_copy_helper.1 + 388
20 SwiftUI OUTLINED_FUNCTION_901 + 2820
21 Pet parents <compiler-generated> - Line 4332488680 main + 4332488680
22 (Missing)

非常感谢您的帮助!


你需要[编辑]你的问题,在[mcve]的形式中包含所有相关的代码,以便使问题成为一个适合话题的问题。 - Dávid Pásztor
3
我在寻求帮助,想知道如何调试这个问题。如果我都不知道从哪里开始,就不能分享整个应用程序的代码了吧?@DávidPásztor - doctore
2个回答

0

我在运行时遇到了类似的崩溃。在我的情况下,我发现了一个复现的方法:使用Swift 5.8并将SWIFT_OPTIMIZATION_LEVEL设置为 Optimize for Speed: [-O] 用于Debug构建。

在这些条件下,如果我运行代码,会发生崩溃:

let circle = Circle().frame(width: 8, height: 8)
let arrow = Image(systemName: "arrow.up")
HStack {
    circle
    arrow
}
HStack {
    arrow
}

但是如果你将let circle替换为lazy var circle,它就可以解决所有问题了!

lazy var circle = Circle().frame(width: 8, height: 8) // fix
let arrow = Image(systemName: "arrow.up")
HStack {
    circle
    arrow
}
HStack {
    arrow
}

更新

为Swift开发人员创建问题https://github.com/apple/swift/issues/65059


0
我在我的应用程序中遇到了类似的问题。我正在使用AVFoundation API来获取视频大小,以便我可以为视图计算一个纵横比。我是这样应用纵横比的:
.aspectRatio(aspectRatio, contentMode: .fit)

问题是有时AVFoundation会返回一个'NaN',这会导致堆栈跟踪中充满OUTLINED_FUNCTION。
你在代码库里做了什么吗?
不幸的是,看起来OUTLINED_FUNCTION是一些内部的SwiftUI东西。关于调试提示,我成功地通过以下方式诊断了我的问题: enter image description here 在这里使用右侧的箭头浏览不同实例的崩溃,并尝试查看它们在堆栈跟踪和日志选项卡中有什么共同点。我打开的这个"日志"选项卡显示了用户在崩溃前经历的一系列面包屑。如果展开事件,还可以获得更多信息。通过以这种方式分析足够多的日志,结合一些代码审查,我成功地提取出了共同点,并复制了这个问题。希望这对你/其他人有所帮助,或者至少给你一些思路!我找不到关于OUTLINED_FUNCTION的太多信息!!!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接