Unity WebGL 콘텐츠는 현재 MonoDevelop 또는 Visual Studio로 디버그할 수 없기 때문에 콘텐츠의 문제를 정확하게 확인하기 어려울 수 있습니다. 다음은 빌드에서 정보를 얻는 방법에 대한 몇 가지 팁입니다.
Unity WebGL은 파일 시스템에 액세스할 수 없으므로 다른 플랫폼처럼 로그 파일을 작성하지 않습니다. 하지만 일반적으로 로그 파일(Debug.Log
, Console.WriteLine
또는 Unity의 내부 로깅 등)로 전송되는 모든 로깅 정보를 브라우저의 JavaScript 콘솔에 작성합니다.
디버깅 목적으로는 일반적으로 Unity에서 개발 빌드를 만드는 것이 좋습니다(빌드 설정 창의 Development Build 체크박스). 개발 빌드는 프로파일러에 연결할 수 있으며 최소화되지 않습니다. 따라서 출력되는 JavaScript 코드는 사람이 읽을 수 있는 C++-mangled 함수 이름을 포함합니다. 이 점을 활용하여 브라우저 오류가 발생하거나 오류 지원이 비활성화 된 상태에서 오류가 발생하는 경우, 또는 Debug.LogError
를 사용하는 경우 브라우저가 스택 트레이스를 표시하도록 할 수 있습니다. 아래와 같이 전체 예외 지원을 제공하는 관리 스택 트레이스와는 달리 여기에서의 스택 트레이스는 손상된 이름을 가지며 손상된 코드와 내부 UnityEngine 코드를 포함합니다.
WebGL는 여러 예외 지원 수준을 지원합니다. WebGL용 빌드 페이지를 참조하십시오. 기본적으로 Unity WebGL은 명시적으로 발생한 예외만 지원합니다. 하지만 전체 예외 지원을 활성화할 수도 있으며, 이 경우 관리 코드에서 null 참조와 범위 초과 배열 요소 접근을 찾아내기 위해, IL2CPP 생성 코드를 통해 추가 검사를 진행할 수 있습니다. 이러한 추가 검사 과정은 성능에 큰 악영향을 주고 코드 용량과 로드 시간을 증가시킵니다. 따라서 디버깅 목적으로만 사용해야 합니다.
전체 예외 지원에서는 함수 이름을 내보내어 관리 코드에 대한 스택 트레이스도 생성합니다. 따라서 검색되지 않은 예외와 Debug.Log
문의 스택 트레이스가 콘솔에 표시되고, System.Environment.Stacktrace
를 사용하여 스택 트레이스 문자열을 얻을 수 있습니다.