# Web 构建的调试和故障排除

> Debug errors and common problems in Unity Web builds.

Visual Studio 不支持调试 Unity Web 内容。使用以下提示获取构建信息。

## 在浏览器的 JavaScript 控制台中调试构建

Unity Web 平台无权访问您的文件系统，因此不会像其他平台那样写入日志文件。但是，它会将所有日志记录信息（例如 `Debug.Log`、`Console.WriteLine` 或 Unity 的内部日志记录）写入浏览器的 JavaScript 控制台。

要打开 JavaScript 控制台，请执行以下操作：

| **操作系统**    | **浏览器**           | **说明**                                                                     |
| ----------- | ----------------- | -------------------------------------------------------------------------- |
| **Windows** | Firefox           | 按 Ctrl-Shift-K。                                                            |
|             | Chrome            | 按 Ctrl-Shift-J。                                                            |
|             | Microsoft Edge    | 按 F12。                                                                     |
|             | Internet Explorer | 按 F12。                                                                     |
| **Mac**     | Firefox           | 按 Command-Option-K。                                                        |
|             | Chrome            | 按 Command-Option-J。                                                        |
|             | Safari            | 1. 转到 **Preferences** > **Advanced** > **Develop**。
2. 按 Command-Option-C。 |

## 创建要调试的开发构建

您可能希望在 Unity 中制作开发构建以调试代码。要制作开发构建，请执行以下操作：

1. 打开[构建配置文件 (Build profiles)](/engine/6000.0/manual/publishing-builds.md) 窗口。

2. 启用**开发构建 (Development Build)**。

开发构建允许您连接性能分析器。Unity 不会[缩减](https://en.wikipedia.org/wiki/Minification_%28programming%29)代码，因此发出的 JavaScript 代码仍然包含人工可读且[经过 C++ 名称修饰的](https://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_C.2B.2B)函数名称。

如果您遇到浏览器错误，使用 `Debug.LogError` 时，或者发生异常并且禁用了异常支持时，浏览器将使用它们来显示堆栈跟踪。与具有完全异常支持时将发生的托管堆栈跟踪不同，这些堆栈跟踪具有重整的名称，包含托管代码，而且包含内部 Unity 引擎代码。

## 异常支持

Web 具有不同级别的异常支持，但默认情况下，Unity Web 仅支持显式抛出异常。有关更多信息，请参阅 [Web 播放器设置](/engine/6000.0/manual/platform-specific/webgl/develop/class-player-settings-web-gl.md#wasm-language-features)。您可以启用**完全的**异常支持，这种情况下支持在 IL2CPP 生成的代码中发起额外的检查，从而检测是否访问了托管代码中的 null 引用和越界数组元素。这些额外的检查会显著影响性能并增加代码大小和加载时间，因此必须只将其用于调试。

完整的异常支持还会发出函数名称，以便为托管代码生成堆栈跟踪信息。出于这一原因，对于未捕获的异常和 `Debug.Log` 语句，堆栈跟踪将出现在控制台中。使用 `System.Environment.StackTrace` 获取堆栈跟踪字符串。

## 故障排除

### 问题：构建耗尽内存

这是一个常见问题，尤其是在 32 位浏览器上。如需了解 Web 内存问题以及如何修复这些问题的更多信息，请参阅有关 [Unity Web 中的内存](/engine/6000.0/manual/platform-specific/webgl/develop/memory.md)文档。

### 错误消息：错误的头部检查 (Incorrect header check)

由于服务器配置不正确，浏览器控制台日志通常会打印出此错误信息。如需详细了解如何部署发布构建，请参阅有关[部署压缩构建](/engine/6000.0/manual/platform-specific/webgl/building-distribution/deploying.md)的文档。

### 错误消息：不支持在此平台上解压缩此格式 (1) (Decompressing this format (1) is not supported on this platform)

当内容尝试加载使用 LZMA 压缩的 AssetBundle 而 Unity Web 不支持时，浏览器控制台日志会输出此错误。使用 LZ4 压缩方式重新压缩 AssetBundle 可以解决此问题。有关 Web 压缩的更多信息，请参阅有关 [Web 构建的](/engine/6000.0/manual/platform-specific/webgl/building-distribution/building.md)文档，特别是 **AssetBundles** 部分。

## 其他资源：

* [Web 开发](/engine/6000.0/manual/platform-specific/webgl/develop.md)
* [Web 性能注意事项](/engine/6000.0/manual/platform-specific/webgl/develop/performance.md)
* [构建和分发 Web 应用程序](/engine/6000.0/manual/platform-specific/webgl/building-distribution.md)
