Version: 2023.1
언어: 한국어
Windows 런타임 지원
스크립팅 제약

IL2CPP로 관리되는 스택 추적

관리되는 코드에서 예외가 발생하는 경우 예외에 대한 스택 추적이 예외의 원인을 파악하는 데 도움이 될 수 있습니다. 그러나 경우에 따라 관리되는 스택 추적이 예상대로 표시되지 않을 수 있습니다. 스택 추적은 빌드 설정에 따라 달라집니다.

C++ Compiler Configuration 옵션

Debug

C++ Compiler Configuration 프로퍼티를 Debug로 설정하면, IL2CPP는 신뢰할 수 있는 관리되는 스택 추적을 보고하고 각 관리되는 메서드를 호출 스택에 포함합니다. 스택 추적에는 원본 C# 소스 코드의 줄 번호가 포함되지 않습니다.

Release 및 Master

C++ Compiler Configuration 프로퍼티를 Release 또는 Master로 설정하면, IL2CPP는 관리되는 메서드가 하나 이상 누락된 호출 스택을 생성할 수 있습니다. 이는 C++ 컴파일러가 누락 메서드를 인라이닝할 때 발생합니다. 일반적으로 메서드 인라이닝은 런타임 성능을 향상시키지만, 호출 스택을 이해하기가 더 어려워질 수 있습니다.

IL2CPP는 항상 호출 스택에 관리되는 메서드를 하나 이상 제공합니다. 관리되는 예외에서 생성된 스택 추적의 경우, 이는 예외가 발생한 메서드입니다. 메서드가 인라이닝되지 않은 경우 다른 메서드도 포함됩니다.

소스 코드 줄 번호

관리되는 스택 추적에 파일 및 줄 번호 정보를 포함하려면 Edit > Project Settings > Player > Other Settings로 이동합니다. 그런 다음 Configuration 헤딩에서 IL2CPP Stacktrace Information 프로퍼티를 Method Name, File Name, and Line Number로 설정합니다.

Method Name, File Name, and Line Number로 설정된 IL2CPP Stacktrace Information
Method Name, File Name, and Line Number로 설정된 IL2CPP Stacktrace Information

이렇게 설정하면 IL2CPP가 관리되는 모든 스택 프레임을 호출 스택에 포함하도록 지시합니다. 각 스택 프레임에는 해당 코드가 있는 관리되는 어셈블리(.dll)에 대해 관리되는 심볼 파일(.pdb)을 사용할 수 있는 경우 적합한 C# 줄 번호도 포함됩니다.

이 기능을 활성화하면 빌드 시간과 빌드된 프로그램의 최종 크기가 약간 증가합니다. 플레이어 빌드 프로세스에는 디버그 심볼 파일을 처리하고 필요한 심볼 구조가 포함된 새 데이터 파일을 생성하는 추가 단계가 포함됩니다. Unity는 빌드된 플레이어와 함께 이 데이터 파일을 제공하며 런타임에 이 파일을 사용하여 호출 스택의 C# 줄 정보를 확인합니다.

이 기능을 활성화하면 Unity는 인라이닝이 있는 경우에도 Release 또는 Master 설정에서 올바른 호출 스택을 생성합니다.

활성화된 스크립트 디버깅

Script Debugging을 활성화하려면 File > Build Settings로 이동한 다음, Script Debugging 체크박스를 활성화합니다. 스크립트 디버깅이 활성화되면 IL2CPP는 메서드, 파일, 줄 번호와 함께 올바른 관리되는 스택 추적을 보고합니다. 이렇게 하면 프로그램 크기가 커지고 성능이 저하되는 단점이 있습니다.

스택 추적만 개선하려면 스크립트 디버깅을 활성화해서는 안 됩니다. 대신 위에 설명한 대로 소스 코드 줄 번호를 활성화합니다.

Windows 런타임 지원
스크립팅 제약