# iOS 上的托管堆栈跟踪

> Use stack traces to understand the cause of errors in managed code.

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

## 调试版本##debug-builds

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

## 发布版本##release-builds

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

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

## 源代码行号##source-code-line-numbers

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

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

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