# ウェブビルドのデバッグとトラブルシューティング

> Debug errors and common problems in Unity Web builds.

Visual Studio は Unity Web コンテンツのデバッグをサポートしていません。ビルド情報の取得には以下のヒントを使用してください。

## ブラウザーの JavaScript コンソールでビルドをデバッグする

Unity Web プラットフォームはファイルシステムにアクセスできないため、他のプラットフォームのようにログファイルを作成しません。ただし、すべてのログ情報 (`Debug.Log`、`Console.WriteLine`、Unity の内部ログなど) はブラウザーの JavaScript コンソールに書き込まれます。

JavaScript コンソールを開くには、以下の手順を行います。

| **OS**      | **ブラウザー**         | **説明**                                                                                   |
| ----------- | ----------------- | ---------------------------------------------------------------------------------------- |
| **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` の使用中にブラウザーエラーが発生した場合、または例外サポートを無効にしているときに例外が発生した場合、ブラウザーはこれらを使用してスタックトレースを表示します。例外サポートを Full に設定した場合に発生するマネージスタックトレースとは異なり、これらのスタックトレースには修飾名が付いており、マネージコードと内部的な Unity エンジンコードが含まれています。

## 例外のサポート

ウェブにはさまざまなレベルの例外サポートがありますが、Unity Web は明示的にスローされた例外のみをデフォルトでサポートします。詳細については、[Web Player 設定](/engine/6000.0/manual/platform-specific/webgl/develop/class-player-settings-web-gl.md#wasm-language-features) を参照してください。例外サポートを **Full** に設定すると、IL2CPP によって生成されたコードで追加のチェックを行い、マネージコードの null 参照と範囲外の配列要素へのアクセスをキャッチできます。これらの追加のチェックはパフォーマンスに大きく影響し、コードサイズやロード時間を増加させるため、デバッグにのみ使用してください。

例外サポートを Full に設定すると、マネージコードのスタックトレースを生成するための関数名も出力されます。このため、キャッチできない例外と `Debug.Log` ステートメントのスタックトレースがコンソールに表示されます。スタックトレース文字列を取得するには、`System.Environment.StackTrace` を使用します。

## トラブルシューティング

### 問題: ビルドにメモリ不足が発生する

これは一般的な問題で、特に 32 ビットブラウザーで発生します。ウェブのメモリ問題とその修正方法の詳細は、[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) に関するドキュメントを参照してください。

### エラーメッセージDecompressing this format (1) isn't supported on this platform

コンテンツが LZMA (Unity Web はこれをサポートしていません) を使用して圧縮されたアセットバンドルを読み込もうとすると、ブラウザーコンソールログはこのエラーを出力します。この問題を解決するには、LZ4 圧縮を使用してアセットバンドルを再圧縮します。ウェブ用の圧縮の詳細は、[Web ビルド](/engine/6000.0/manual/platform-specific/webgl/building-distribution/building.md) に関するドキュメント、特に **アセットバンドル** のセクションを参照してください。

## その他の参考資料

* [ウェブ開発](/engine/6000.0/manual/platform-specific/webgl/develop.md)
* [ウェブパフォーマンスに関する考慮事項](/engine/6000.0/manual/platform-specific/webgl/develop/performance.md)
* [ウェブアプリケーションのビルドと配信](/engine/6000.0/manual/platform-specific/webgl/building-distribution.md)
