Version: 2022.2
언어: 한국어
Unity 리모트
iOS에서 성능 최적화

iOS의 관리되는 스택 추적

관리되는 코드에서 예외가 발생하는 경우 예외에 대한 스택 추적이 예외의 원인을 이해하는 데 유용할 수 있습니다. 하지만 아래 설명과 같이 경우에 따라 관리되는 스택 추적이 iOS에서 올바르게 표시되지 않을 수 있습니다. 스택 추적은 Xcode 빌드 설정에 따라서도 달라집니다.

디버그 빌드

디버그 빌드 설정을 iOS에서 사용하는 경우 IL2CPP는 신뢰할 수 있는 관리 스택 추적을 보고하고 관리되는 메서드를 호출 스택에 각각 포함해야 합니다. 스택 추적에는 원본 C# 소스 코드의 줄 번호가 포함되지 않습니다.

릴리스 빌드

릴리스 빌드 설정을 사용하는 경우 IL2CPP는 관리되는 메서드가 하나 이상 누락된 호출 스택을 생성할 수 있습니다. 이는 C++ 컴파일러에서 누락된 메서드를 인라이닝했기 때문입니다. 메서드를 인라이닝하면 일반적으로 런타임에 성능을 높이는 데 유리하지만, 호출 스택을 이해하기가 더 어려워질 수 있습니다. IL2CPP는 항상 호출 스택에서 관리되는 메서드를 하나 이상 제공합니다. 이 메서드는 예외가 발생한 메서드고 인라이닝되지 않은 다른 메서드도 포함합니다.

예외를 로컬에서 재현할 수 있는 경우 Xcode를 사용하여 어떤 메서드가 인라이닝되었는지 확인합니다. Xcode에서 릴리스 설정을 사용하여 애플리케이션을 실행하고 예외 중단점을 설정합니다. Xcode의 네이티브 호출 스택 뷰에는 실제로 존재하는 메서드와 인라이닝된 메서드가 표시됩니다.

소스 코드 줄 번호

IL2CPP 호출 스택에는 디버그 또는 릴리스 설정의 소스 코드 줄 번호가 포함되지 않습니다.


  • 2018년 3월 21일 페이지 게시됨
Unity 리모트
iOS에서 성능 최적화