在托管代码中发生异常时,异常的堆栈跟踪可以帮助你了解异常的原因。但是,对于 iOS 上的某些情况,托管堆栈跟踪可能不会按预期出现。堆栈跟踪还根据 Xcode 构建配置而异。
当在 iOS 上使用调试构建配置时,IL2CPPUnity 开发的脚本后端,可以将它用作在某些平台构建项目时的 Mono 的替代方案。更多信息
参见 词汇表 将报告可靠的托管堆栈跟踪,并包含调用堆栈中的每个托管方法。堆栈跟踪不包括原始 C# 源代码的行号。
当使用发布构建配置时,IL2CPP 可能会产生一个调用堆栈,其中缺少一个或多个托管方法。这是因为 C++ 编译器内联了缺少的方法。方法内联通常有利于运行时的性能,但它可能会使调用堆栈更难理解。IL2CPP 始终在调用堆栈上提供至少一个托管方法。这是发生异常的方法。如果未内联其他方法,它还包括这些方法。
如果你可以针对异常进行本地重现,请使用 Xcode 来查找内联方法。在 Xcode 中使用发布配置运行应用程序,并设置异常断点。Xcode 中的本机调用堆栈视图将指示实际存在哪些方法,以及哪些方法已内联。
IL2CPP 调用堆栈默认情况下不包含调试或发布配置中的源代码行号信息。你可以使用以下步骤启用源代码行号
注意:使用此选项可能会增加构建时间和已构建程序的最终大小。