# 웹 빌드 디버깅 및 문제 해결

> Debug errors and common problems in Unity Web builds.

Visual Studio는 Unity 웹 콘텐츠 디버깅을 지원하지 않습니다. 다음 팁을 사용하여 빌드 정보를 가져오십시오.

## 브라우저의 JavaScript 콘솔에서 빌드 디버깅

Unity 웹 플랫폼은 파일 시스템에 액세스할 수 없으므로 다른 플랫폼처럼 로그 파일을 작성하지 않습니다. 그러나 `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++-mangled](https://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_C.2B.2B) 함수 이름이 여전히 포함되어 있습니다.

이를 통해 브라우저는 브라우저 오류가 발생하거나, `Debug.LogError`를 사용하거나, 예외 지원이 비활성화된 상태에서 예외가 발생하는 경우 스택 추적을 표시할 수 있습니다. 전체 예외 지원을 제공할 때 발생할 수 있는 관리되는 스택 추적과 달리, 이 스택 추적은 손상된 이름을 가지며 관리되는 코드와 내부 Unity Engine 코드를 모두 포함합니다.

## 예외 지원

웹은 다양한 수준의 예외를 지원하지만 기본적으로 Unity 웹은 명시적으로 발생한 예외만 지원합니다. 자세한 내용은 [웹 Player 설정](/engine/6000.0/manual/platform-specific/webgl/develop/class-player-settings-web-gl.md#wasm-language-features)을 참조하십시오. **Full** 예외 지원을 활성화하면 IL2CPP 생성 코드로 추가 검사를 진행하여 관리되는 코드에서 null 레퍼런스 및 범위 초과 배열 요소에 대한 액세스를 찾아낼 수 있습니다. 이러한 추가 검사 과정은 성능에 큰 영향을 미치며 코드 크기와 로드 시간을 증가시키므로 디버깅에만 사용하는 것이 좋습니다.

전체 예외 지원에서는 함수 이름을 내보내서 관리되는 코드에 대한 스택 추적을 생성하기도 합니다. 따라서 검색되지 않은 예외와 `Debug.Log` 문의 스택 추적이 콘솔에 표시됩니다. `System.Environment.StackTrace`를 사용하여 스택 추적 문자열을 가져옵니다.

## 문제 해결

### 문제: 빌드의 메모리 부족

이는 특히 32비트 브라우저에서 흔히 발생하는 문제입니다. 웹 메모리 문제와 해결 방법에 대한 자세한 내용은 [Unity 웹 메모리](/engine/6000.0/manual/platform-specific/webgl/develop/memory.md) 기술 자료를 참조하십시오.

### 오류 메시지 : 잘못된 헤더 검사

일반적으로 서버 구성이 잘못되었을 때 브라우저 콘솔 로그에 이 오류가 출력됩니다. 릴리스 빌드를 배포하는 상세한 방법은 [압축 빌드 배포](/engine/6000.0/manual/platform-specific/webgl/building-distribution/deploying.md)에 대한 기술 자료를 참고하십시오.

### 오류 메시지 이 포맷(1)의 압축 해제가 이 플랫폼에서 지원되지 않음

콘텐츠가 Unity 웹이 지원하지 않는 LZMA를 사용하여 압축된 에셋 번들을 로드하려고 할 때 브라우저 콘솔 로그에 이 오류가 출력됩니다. 이 문제를 해결하려면 LZ4 압축을 사용해 에셋 번들을 다시 압축하십시오. 웹용 압축에 대한 자세한 내용은 [웹 빌드](/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)
