관리되는 코드에서 예외가 발생하면 예외의 스택 추적을 통해 예외의 원인을 파악할 수 있습니다. 하지만 일부 iOS에서 관리되는 스택 추적이 예상대로 표시되지 않을 수 있습니다. 스택 추적도 Xcode 빌드 설정에 따라 달라집니다.
디버그 빌드 설정을 iOS에서 사용하는 경우 IL2CPP는 신뢰할 수 있는 관리 스택 추적을 보고하고 관리되는 메서드를 호출 스택에 각각 포함해야 합니다. 스택 추적에는 원본 C# 소스 코드의 줄 번호가 포함되어 있지 않습니다.
릴리스 빌드 설정을 사용하는 경우 IL2CPP는 하나 이상의 관리되는 메서드가 누락된 호출 스택을 생성할 수 있습니다. 이는 C++ 컴파일러가 누락된 메서드를 인라인화했기 때문입니다. 메서드 인라이닝은 일반적으로 런타임 시 성능에 도움이 되지만, 호출 스택을 파악하기 어려울 수 있습니다. IL2CPP는 항상 호출 스택에 하나 이상의 관리되는 메서드를 제공합니다. 이는 예외가 발생한 메서드입니다. 인라이닝되지 않은 경우 다른 메서드도 포함됩니다.
예외를 로컬에서 재현할 수 있는 경우 Xcode를 사용하여 인라인 메서드를 찾습니다. 릴리스 설정을 사용하여 Xcode에서 애플리케이션을 실행하고 예외 브레이크 포인트를 설정합니다. Xcode의 네이티브 호출 스택 뷰는 실제로 존재하는 메서드와 인라이닝된 메서드를 나타냅니다.
IL2CPP 호출 스택에는 디버그 또는 릴리스 설정에 기본적으로 소스 코드 줄 번호가 포함되어 있지 않습니다. 다음 단계를 통해 소스 코드 줄 번호를 활성화할 수 있습니다.
참고: 이 옵션을 사용하면 빌드된 프로그램의 빌드 시간과 최종 크기를 모두 늘릴 수 있습니다.