관리되는 코드에서 예외가 발생하는 경우 예외에 대한 스택 추적이 예외의 원인을 이해하는 데 유용할 수 있습니다. 하지만 아래 설명과 같이 경우에 따라 관리되는 스택 추적이 iOS에서 올바르게 표시되지 않을 수 있습니다. 스택 추적은 Xcode 빌드 설정에 따라서도 달라집니다.
디버그 빌드 설정을 iOS에서 사용하는 경우 IL2CPP는 신뢰할 수 있는 관리 스택 추적을 보고하고 관리되는 메서드를 호출 스택에 각각 포함해야 합니다. 스택 추적에는 원본 C# 소스 코드의 줄 번호가 포함되지 않습니다.
릴리스 빌드 설정을 사용하는 경우 IL2CPP는 관리되는 메서드가 하나 이상 누락된 호출 스택을 생성할 수 있습니다. 이는 C++ 컴파일러에서 누락된 메서드를 인라이닝했기 때문입니다. 메서드를 인라이닝하면 일반적으로 런타임에 성능을 높이는 데 유리하지만, 호출 스택을 이해하기가 더 어려워질 수 있습니다. IL2CPP는 항상 호출 스택에서 관리되는 메서드를 하나 이상 제공합니다. 이 메서드는 예외가 발생한 메서드고 인라이닝되지 않은 다른 메서드도 포함합니다.
예외를 로컬에서 재현할 수 있는 경우 Xcode를 사용하여 어떤 메서드가 인라이닝되었는지 확인합니다. Xcode에서 릴리스 설정을 사용하여 애플리케이션을 실행하고 예외 중단점을 설정합니다. Xcode의 네이티브 호출 스택 뷰에는 실제로 존재하는 메서드와 인라이닝된 메서드가 표시됩니다.
IL2CPP 호출 스택에는 디버그 또는 릴리스 설정의 소스 코드 줄 번호가 포함되지 않습니다.