# 堆栈跟踪日志记录

> Configure the level of stack trace information shown in Unity's log files and console to help track down problems in your scripts.

Unity Console 消息和日志文件可以包含详细的堆栈跟踪信息。控制台还会链接到生成消息的代码行。当您想要识别导致日志条目出现的行、方法或函数调用序列，这非常有用。

\*\*提示：\*\*检查代码的另一种方法是将[调试器附加](/engine/6000.0/manual/scripting/debugging-and-diagnostics/managed-code-debugging.md)到编辑器或构建的播放器。

## 托管和非托管代码的堆栈跟踪##stack-trace-for-managed-and-unmanaged-code

Unity 可提供托管和非托管代码的堆栈跟踪信息：

* \*\*托管代码：\*\*在 Unity 中运行的托管 DLL 或 C# 脚本。其中包括 Unity 附带的脚本、您编写的自定义脚本、Asset Store 插件附带的第三方脚本或者引擎中运行的任何其他 C# 脚本。

* \*\*非托管代码：\*\*原生 Unity 引擎代码，或直接在计算机上或目标构建平台上运行的原生插件中的代码。非托管代码通常是从 C 或 C++ 代码编译的。仅当拥有原生二进制文件的原始源代码时才能访问它。通常，仅当需要确定错误源自于您的代码还是引擎代码（以及源自于引擎代码中某个具体的部分）时，才会对非托管代码使用堆栈跟踪。

Unity 提供了三个堆栈跟踪选项：

* \*\*None：\*\*Unity 不输出堆栈跟踪信息。
* \*\*ScriptOnly：\*\*Unity 仅输出托管代码的堆栈跟踪信息。这是默认选项。
* \*\*Full：\*\*Unity 输出托管和非托管代码的堆栈跟踪信息。

## 堆栈跟踪资源要求##stack-trace-resource-requirements

解析堆栈跟踪（特别是整个堆栈跟踪）是一种资源密集型操作。堆栈跟踪的一些最佳做法包括：

* 仅将堆栈跟踪用于调试。切勿将应用程序部署到启用了堆栈跟踪的用户。
* 限制显示堆栈跟踪的消息类型。例如，考虑仅对异常和警告使用堆栈跟踪。

## 设置堆栈跟踪类型##setting-the-stack-trace-type

\*\*注意：\*\*堆栈跟踪选项是一种构建设置，会影响到构建的播放器。它不是编辑器中的视图偏好设置。

要指定堆栈跟踪中所包含的细节量，可以使用脚本 API 或编辑器：

* 要通过脚本 API 控制堆栈跟踪日志记录，请使用 [Application.SetStackTraceLogType](/engine/6000.0/script-reference/unity-engine/application/set-stack-trace-log-type.md)。可以使用 API 在播放器构建之前或运行时更改播放器的堆栈跟踪设置。

* 要使用控制台，请选择控制台 (Console) 菜单按钮，然后：

  * 要为所有控制台消息类型选择相同的堆栈跟踪选项，请选择**堆栈跟踪日志记录 (Stack Trace Logging)** > **全部 (All)**。
  * 要仅为其中一种控制台消息类型选择堆栈跟踪选项，请选择**堆栈跟踪日志记录 (Stack Trace Logging)** > **\[消息类型] (\[MESSAGE TYPE])**。使用新设置重新构建播放器。

* 要使用播放器设置 (Player Settings) 窗口，请选择**编辑 (Edit)** > **项目设置 (Project Settings)** > **播放器 (Player)** > **其他设置 (Other Settings)**。使用新设置重新构建播放器。


**控制台中的堆栈跟踪日志记录选项。以下示例显示了异常 (Exception) 的选项。:**
![](/api/media?file=/engine/6000.0/media/images/StackTraceInConsole.png)

## 从堆栈跟踪输出中打开源文件##open-source-files-from-the-stack-trace-output

消息的全文包含对代码文件中特定行的引用以及链接。单击任意链接即可在 IDE 中打开文件并转到引用的行。

## 查找构建的应用程序的输出日志文件##find-the-output-log-file-of-a-built-application

构建的应用程序不会输出到控制台。要查看堆栈跟踪，请[使用应用程序的日志文件](/engine/6000.0/manual/scripting/debugging-and-diagnostics/log-files.md)。

## 其他资源##additional-resources

* [控制台窗口](/engine/6000.0/manual/unity-editor/using-the-editor/console.md)
* [日志文件](/engine/6000.0/manual/scripting/debugging-and-diagnostics/log-files.md)
