심볼은 함수 이름에 프로그램 주소를 매핑합니다. 이를 통해 퍼포먼스 리포팅 서비스는 메모리 주소 대신에 사람이 읽을 수 있는 함수 이름으로 네이티브 크래시 스택 추적을 제공할 수 있습니다. 심볼은 실행 파일 자체에 포함될 수도 있지만, 보통은 실행 파일 크기를 줄이고 실행 파일을 쉽게 조작하지 못하도록 하기 위해 별도 파일에 저장됩니다.
심볼 파일은 운영체제에 따라 다양한 포맷으로 제공됩니다. Apple 플랫폼은 dSYM 폴더를 사용하고, Android 심볼은 .so 파일에 저장되고, Windows 심볼은 .pdb 파일에 저장됩니다. 퍼포먼스 리포팅 서비스는 이러한 모든 포맷을 식별하고 처리할 수 있습니다.
퍼포먼스 리포팅 서비스는 다음과 같은 두 개의 별도 심볼 세트와 연동됩니다.
심볼 파일에는 실행 파일의 ID와 반드시 일치해야 하는 UUID(Universally Unique Identifier) 또는 GUID(Globally Unique Identifier)가 들어 있습니다. 퍼포먼스 리포팅 서비스는 라이브러리 또는 모듈과 일치하는 ID가 포함된 심볼 파일을 로드하지 못하면 다음의 오류를 생성합니다.
<system symbols missing>
<symbols missing for uuid: xxx…>
퍼포먼스 리포팅 서비스 누락 심볼 파일은 Unity 서비스 대시보드의 Reports 섹션에 있는 Performance 탭에 표시됩니다.
시스템 심볼이 누락된 보고서는 대시보드의 Reports 섹션에 있는 스택 추적에 다음의 줄을 포함합니다.
<symbols missing for uuid: xxx…>
일반적으로 이 문제는 Unity에 운영체제 버전에 해당하는 심볼이 없기 때문에 발생합니다. iOS 및 기타 Apple 플랫폼의 경우 예전 운영체제 버전에 대한 심볼을 포함하기 어려울 수 있습니다. Unity는 iOS 7 제품군을 비롯하여 80%의 iOS 버전에 대한 시스템 기호화를 제공합니다. Unity는 새로운 iOS 버전이 출시되면 가능한 빠른 시일 내에 해당 심볼을 캡처하기 위해 노력합니다.
이러한 문제가 발생하면 다른 운영체제 버전에 대한 비슷한 크래시 보고가 있는지 확인해보십시오. 그러면 해당 운영체제 버전에서 디버깅을 수행하여 문제를 해결할 수도 있습니다.
애플리케이션 심볼이 누락된 보고서는 스택 추적에 다음의 줄을 포함합니다.
<symbols missing for uuid: xxx…>
퍼포먼스 리포팅이 활성화된 프로젝트를 빌드하는 경우 Unity는 심볼 파일을 생성하여 퍼포먼스 리포팅 서버에 업로드합니다. 프로세스가 실패하면 심볼 누락 메시지가 서비스 대시보드에 나타납니다.
심볼 업로드에 대한 문제 해결이 실패하면 메인 Unity 로그와 같은 폴더에 있는 symbol_upload.log
파일을 확인하십시오. 이 파일은 어느 심볼을 찾아서 처리했는지 표시하고, 심볼의 프로세스 및 업로드 동안 발생한 오류도 함께 보여줍니다.