iOS 및 tvOS 로그와 크래시 리포트 액세스
언리얼 엔진으로 빌드한 iOS 애플리케이션은 개발자가 프로젝트를 디버깅하고 코드 문제를 해결하는 데 사용할 수 있는 크래시 로그를 생성합니다. 하지만 보안상의 이유로 디버그 심볼은 크래시 로그에서 제공되지 않습니다. 키와 숫자로 표시되는데, 함수의 이름 또는 변수에 관한 정보를 사람이 읽을 수 있는 포맷으로 보려면 로그를 프로젝트의 심볼 데이터베이스에 일치시켜야 합니다.
디바이스에 디버그 빌드를 제공하는 방법에 따라 로그의 심볼을 다시 생성하고 읽는 여러 프로세스가 있습니다. TestFlight는 다수의 디바이스에 테스트 빌드를 저장하는 Apple의 애플리케이션으로, 이러한 빌드에서 개발자에게 로그를 제공합니다. USB 디버깅으로 로그를 직접 가져올 수도 있습니다.
iOS 프로젝트의 로그를 읽으려면 Mac과 Xcode가 필요합니다. IDE와 다른 운영 체제에서는 이 페이지의 워크플로를 사용하지 않습니다.
1. 디바이스에서 로그에 직접 액세스
USB 또는 이더넷으로 직접 디버깅하는 경우, 다음 단계를 따라 심볼이 생성된 크래시 로그를 확인합니다.
Xcode의 메인 메뉴에서 Window > Devices and Simulators를 선택합니다.
크래시 데이터를 가져올 iPhone을 선택하고 View Device Logs를 클릭합니다.
Control 키를 누른 채로 읽고자 하는 로그를 클릭하고, Re-Symbolicate and export Log를 클릭합니다.
그러면 디버그 심볼과 함께 사람이 읽을 수 있는 로그가 제공됩니다.
2. TestFlight에서 로그 액세스
TestFlight로 제공되는 애플리케이션에서 크래시가 발생하는 경우, 크래시 정보가 포함된 XCrashPoint 파일이 생성됩니다. 이 파일을 읽으려면 프로젝트에 대한 디버그 심볼이 포함된 .dSYM 파일이 있어야 하고, 크래시 리포트를 추출한 다음 심볼을 다시 생성해야 합니다.
TestFlight를 통한 애플리케이션 디플로이와 로그 액세스에 관한 정보는 Apple의 TestFlight 관련 문서를 참조하세요. 이 섹션에서는 리포트 획득 후 심볼을 생성하는 방법에 관한 정보를 제공합니다.
.dSYM 생성하기 패키징 중인 파일
프로젝트를 패키지로 만들 때 .dSYM 파일을 생성하는 단계는 다음과 같습니다.
언리얼 에디터(Unreal Editor)를 엽니다.
프로젝트 세팅(Project Settings)을 열고, 플랫폼(Platforms) > iOS > 빌드(Build)로 이동합니다.
코드 디버깅 및 프로파일링을 위해 dSYM 파일 생성(Generate dSYM file for code debugging and profiling)을 활성화합니다.
프로젝트를 패키징합니다.
프로젝트의 .dSYM 파일이 /Binaries/iOS의 프로젝트 폴더에 표시됩니다.
.dSYM 파일에는 패키징된 시간을 보여주는 타임스탬프가 있습니다. .dSYM 파일을 올바른 빌드와 일치시킬 수 있도록 이 정보를 기록해 두세요.
명령줄에서 .dSYSM 파일 생성하기
UAT를 사용하여 .dSYM 파일을 생성하려면 명령줄에 RunUAT 스크립트와 함께 GenerateDYSM 명령을 실행합니다. 파라미터를 다음과 같이 지정합니다.
| Parameter | 선택 사항 | 유효한 값 | 설명 |
|---|---|---|---|
-Platform=[타깃 플랫폼] | 테스트함 | IOS, TVOS, Mac | 타깃 플랫폼을 지정합니다. 지정하지 않으면 현재 플랫폼이 디폴트값이 됩니다. |
-Target=[프로젝트 이름] | 테스트함 | 프로젝트의 이름입니다. | 사용할 프로젝트를 지정합니다. 지정하지 않으면 현재 프로젝트가 디폴트값이 됩니다. |
-Config=[빌드 환경설정] | 테스트함 | Debug, DebugGame, Development, Test, Shipping | 타깃 빌드 환경설정입니다. 지정하지 않으면 기본값은 Development가 디폴트값이 됩니다. |
-Architecture=[아키텍처 유형] | 하지 않음 | x64, arm64, x64+arm64] | 타깃 디바이스 아키텍처입니다. |
-flat | 테스트함 | 입력을 받지 않습니다. | 지정한 경우 .dSYMs는 컴퓨터나 서버 간에 복사하기 쉬운 플랫 파일이 됩니다. |
예를 들어, 다음 명령은 arm64 아키텍처를 사용하는 iOS 디바이스를 위한 .dSYM 파일을 생성합니다.
```RunUAT.command GenerateDYSM -project=MyProject -platform=Mac -target=EngineTestEditor -config=Test -architecutre=arm64```크래시 리포트 추출 및 심볼 재생성
크래시 리포트를 획득하고 읽을 수 있도록 심볼을 재생성하려면 다음 단계를 따르세요.
TestFlight에서
XCrashPoint파일을 가져옵니다. 다음의 명령줄 입력을 사용할 수 있습니다.C++export PATH="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources:$PATH"Control 키를 누른 채로
.XCrashPoint파일을 클릭하고 Extract.crashfile을 클릭합니다. 다음의 명령줄 입력을 사용하여 이 정보를 익스포트할 수 있습니다.C++export PATH="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources:$PATH"Xcode를 열고, 터미널을 확인합니다. 터미널에서 Xcode
.package로 이동합니다.다음의 명령줄을 실행하여 크래시 심볼 생성 툴을 사용합니다.
C++export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer" cp -i /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash ././symbolicatecrash unsymbolicated.crash symbols.dSYM > symbolicated.crash
위의 인스트럭션은 기본 디렉터리를 사용합니다. 이러한 명령줄을 실행할 때 .crash 및 .dSYM 파일의 위치를 사용합니다.
이후 Xcode에서 함수 이름과 변수가 표시되는 크래시 로그를 제공합니다.