当托管代码中发生异常时,该异常的堆栈跟踪可以帮助您了解发生异常的原因。但是,在某些情况下,如下所述,托管堆栈跟踪可能不会按预期显示。堆栈跟踪会根据构建配置而有所不同。
使用调试版本配置时,IL2CPP 会报告可靠的托管堆栈跟踪,并在调用堆栈中包含每个托管方法。该堆栈跟踪不包含原始 C# 源代码中的行号。
使用发布版本配置时,IL2CPP 可能会生成缺少一个或多个托管方法的调用堆栈。这是因为 C++ 编译器已经内联了缺少的方法。方法内联通常对运行时的性能有好处,但可能会使调用堆栈更难理解。IL2CPP 始终在调用堆栈上提供至少一个托管方法。此方法便是发生异常的方法。调用堆栈上还包括其他未内联的方法。
在调试或发布配置中,IL2CPP 调用堆栈不包含源代码行号信息。