Unity 디버깅 가이드
이 문서는 Unity에서의 디버깅 과정을 쉽게 이해할 수 있도록 설명합니다. Unity는 게임과 에디터 프로세스를 위한 다양한 디버깅 옵션을 제공하며, 이는 두 가지 주요 타입—네이티브 C++ 디버깅과 C# 관리 디버깅—으로 나눌 수 있습니다.
1. Windows에서의 디버깅
Unity는 Windows에서 다양한 디버깅 옵션을 제공합니다.
1.1 네이티브 디버깅과 관리 디버깅
- 네이티브 디버깅: executable (exe) 및 동적 링크 라이브러리 (dll) 파일을 포함하여, 심볼은 프로그램 데이터베이스(PDB)에 저장됩니다.
- 관리 디버깅: .NET 관리 심볼은 .pdb 확장자를 가진 파일에 저장됩니다.
1.2 심볼 설정
Windows 디버거인 WinDbg에서 Unity 심볼 스토어에 접근하려면 다음 명령어를 입력합니다:
.sympath+ SRV*c:\symbols-cache*http://symbolserver.unity3d.com/
SRV
: 외부 서버에서 데이터 가져오기c:\symbols
: 로컬에 다운로드한 심볼이 저장될 경로http://symbolserver.unity3d.com/
: 데이터 가져올 서버 경로
1.3 Visual Studio 설정
Visual Studio에서 디버깅 설정을 하려면 다음 단계를 따릅니다: 1. Tools > Options로 이동 2. Debugging 섹션 확장 후 Symbols 선택 3. 캐시 디렉토리 지정 4. Unity 심볼 스토어와 같은 PDB 파일 경로 추가
2. 라이브 디버깅
라이브 디버깅은 이미 실행 중인 프로세스에 디버거를 연결하는 방법입니다. 디버거가 올바른 작업을 위한 .pdb 파일을 찾도록 하기 위해, 실행 파일의 이름이 게임 이름과 동일해야 합니다.
3. 자동 예외 디버깅 설정
Windows에서 애플리케이션 크래시 시 자동으로 오류 보고를 전송하도록 설정할 수 있습니다. 레지스트리에 다음 내용을 추가하십시오:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]
"Auto"="1"
4. 사후 분석 디버깅
Windows는 크래시 덤프 파일(.dmp 또는 .mdmp)을 조사할 수 있는 기능을 제공합니다. 크래시 덤프는 문제의 원인을 분석하는 데 중요한 데이터를 포함하고 있습니다.
일반적으로 조사할 스택이 하나 이상 존재하며, 이를 분석하기 위해 Visual Studio 또는 WinDbg를 사용해야 합니다.
5. 디버깅 힌트와 요령
디버깅을 효율적으로 하기 위해 Unity의 VS 코드용 UnityMixedCallstack 확장자를 사용하는 것이 좋습니다.
5.1 예외 처리
보통의 관리 예외는 다음과 같은 형태로 나타납니다:
1b45558c()
> mono-2.0-bdwgc.dll!malloc(unsigned int size=12) ...
6. 애플리케이션 덤프 강제 생성
애플리케이션 크래시가 발생할 경우, 다음 절차를 통해 유용한 정보를 획득할 수 있습니다: 1. Windows 레지스트리 열기 2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting으로 이동 3. LocalDumps 폴더가 없으면 생성 4. 아래 키 추가
"DumpFolder"="C:\\Temp"
"DumpCount"=dword:00000010
"DumpType"=dword:00000002
7. Windows용 Visual Studio 프로젝트 생성
Visual Studio를 사용해 Unity 프로젝트를 설정하고, 필요에 따라 디버깅을 수행할 수 있습니다.
8. 추가 리소스
Unity의 공식 웹사이트와 포럼을 참조하여 더 많은 정보와 도움을 받을 수 있습니다.
섹션 | 설명 |
---|---|
1 | Windows에서의 디버깅 |
1.1 | 네이티브 디버깅과 관리 디버깅 |
1.2 | 심볼 설정 |
1.3 | Visual Studio 설정 |
2 | 라이브 디버깅 |
3 | 자동 예외 디버깅 설정 |
4 | 사후 분석 디버깅 |
5 | 디버깅 힌트와 요령 |
5.1 | 예외 처리 |
6 | 애플리케이션 덤프 강제 생성 |
7 | Windows용 Visual Studio 프로젝트 생성 |
8 | 추가 리소스 |