Version: Unity 6.0 (6000.0)
语言 : 中文
在 iOS 设备上收集性能数据
在 iOS 设备上进行故障排除

iOS 上的托管堆栈跟踪

当托管代码中发生异常时,该异常的堆栈跟踪可以帮助您了解发生异常的原因。然而,在 iOS 上,托管堆栈跟踪在某些情况下可能无法按预期显示。堆栈跟踪也会根据 Xcode 构建配置而有所不同。

调试版本

在 iOS 上使用调试构建配置时,IL2CPP 会提供可靠的托管堆栈跟踪,并在调用堆栈中包含每个托管方法。但该堆栈跟踪不会包含原始 C# 源代码中的行号。

发布版本

使用发布版本配置时,IL2CPP 可能会生成缺少一个或多个托管方法的调用堆栈。这是因为 C++ 编译器已经内联了缺少的方法。虽然方法内联可以提升运行时性能,但会使调用堆栈更难以理解。IL2CPP 始终在调用堆栈上提供至少一个托管方法。此方法便是发生异常的方法。调用堆栈上还包括其他未内联的方法。

如果能够在本地复现异常,可以使用 Xcode 查看内联方法。在 Xcode 中使用发布配置运行应用程序,并设置异常断点。Xcode 的原生调用堆栈视图将显示实际存在和已被内联的方法。

源代码行号

默认情况下,IL2CPP 调用堆栈在调试和发布配置中均不包含源代码行号信息。如果需要启用源代码行号,可以按照以下步骤操作:

  1. 打开编辑 (Edit) > 项目设置 (Project Settings) > Player (播放器) > iOS 设置 (iOS settings) > 其他设置 (Other Settings).
  2. 在配置 (Configuration) 部分中,将 IL2CPP Stacktrace 信息 (IL2CPP Stacktrace Information) 设置为 Method Name、File Name 和 Line Number

注意:启用此选项可能会增加构建时间和最终程序的体积。

在 iOS 设备上收集性能数据
在 iOS 设备上进行故障排除