Version: Unity 6.0 (6000.0)
语言 : 中文
IL2CPP runtime code checks
处理针对 IL2CPP 其他参数的特定于平台的设置

托管堆栈跟踪与 IL2CPP

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

C++ Compiler Configuration 选项

Debug

当设置 C++ Compiler Configuration 属性来进行调试时,IL2CPP 会报告可靠的托管堆栈跟踪,并在调用堆栈中包含每个托管方法。该堆栈跟踪不包含原始 C# 源代码中的行号。

Release 和 Master

C++ Compiler Configuration 属性设置为 ReleaseMaster 设置时,IL2CPP 可能会生成缺少一个或多个托管方法的调用栈。当 C++ 编译器内联缺少的方法时,会发生这种情况。方法内联通常会改善运行时的性能,但可能会使调用堆栈更难理解。

IL2CPP 始终在调用堆栈上提供至少一个托管方法。对于由托管异常创建的堆栈跟踪,这是会导致异常发生的方法。调用堆栈上还包括其他未内联的方法。

源代码行号

要在托管堆栈跟踪中包含文件和行号信息,请选择编辑 (Edit) > 项目设置 (Project Settings) > 播放器 (Player) > 其他设置 (Other Settings)。然后在配置 (Configuration) 标题下,将 IL2CPP Stacktrace Information 属性设置为 Method Name、File Name 和 Line Number 设置。

IL2CPP Stacktrace Information 属性设置为 Method Name、File Name 和 Line Number
IL2CPP Stacktrace Information 属性设置为 Method Name、File Name 和 Line Number

此设置指示__ IL2CPP__种由 Unity 开发的脚本后端,可在为某些平台构建项目时替代 Mono。更多信息
See in Glossary
在调用堆栈中包含所有托管堆栈帧。只要有托管符号文件 (.pdb) 可用,并且此符号文件对应于包含该代码的托管程序集 (.dll),每个堆栈帧就会包含正确的 C# 行号。

启用此功能后,会略微延长构建时间并增加构建程序的最终大小。播放器构建过程包括一个额外的步骤,用于处理调试符号文件并生成一个新的数据文件,其中包含必要的符号形式。Unity 随构建好的播放器一起提供此数据文件,并在运行时使用此数据文件来确定调用堆栈中的 C# 行信息。

启用此功能后,即使存在内联,Unity 也会在 ReleaseMaster 配置中生成正确的调用堆栈。

启用脚本调试

要启用脚本调试,请选择文件 (File) > 构建配置文件 (Build Profiles),然后启用脚本调试 (Script Debugging) 复选框。启用脚本调试后,IL2CPP 会报告正确的托管堆栈跟踪以及方法、文件和行号。这样做的代价是程序大小增大和性能下降。

如果只想改善堆栈跟踪,则不应启用脚本调试。请改用上述的源代码行号

其他资源

IL2CPP runtime code checks
处理针对 IL2CPP 其他参数的特定于平台的设置
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961