본문 바로가기
Develop/iOS

[iOS] Crash Report - error stacktrace가 안 보일 때🤔

by 3-stack 2021. 9. 25.

iOS Crash Report Symbolication

macOS, tvOS, iOS 애플리케이션이 크래시 나면 크래시 리포트는 모든 stack trace를 보여준다.

그런데 클래스, 메소드, 파일명과 같은 도움이 되는 정보가 아니라 추상화된 데이터와 메모리 주소만 보여준다.

크래시 리포트에서 나타나는 BackTrace의 주소값을 Symbol로 전환하려면 Symbolication 해야한다.
Symbolication된 크래시 리포트를 보게 되면 실제로 소스 코드의 어떤 부분에서 크래시가 발생하였는지 알 수 있게 된다.
Symbol은 사람이 읽을 수 있는 데이터 타입이다. Symbol의 예로는 전역 변수, 지역 변수, 함수의 이름, 인자 값 등이 있다.

Symbolication 를 위해서 dSYM package 가 필요하다.
dSYM package 란? official developer documentation

1. Xcode 에서 .dSYM bundle 찾기

  1. In Xcode, open the Window menu, then select Organizer.
  2. Select the Archives tab.
  3. Select your app in the left sidebar.
  4. Right-click on the latest archive and select Show in Finder.
  5. Right-click the .xcarchive file in Finder and select Show Package Contents
    .
  6. You should see a folder named dSYMs that contains your dSYM bundle.
  7. Create a zip file of the dSYM bundle.

2. App Store Connect 에서 .dSYM bundle 찾기

Bitcode was introduced by Apple to allow apps sent to the App Store
to be recompiled by Apple itself and apply the latest optimization.
If Bitcode is enabled, the symbols generated for your app in the store will be different
than the ones from your own build system.

앱스토어로 빌드앱 전송시 최적화를 위해 재컴파일될 수 있다.
Build UUID가 변경 되어 빌드파일과 dSYM파일의 UUID가 일치하지 않아 Symbolication 할 수 없게 된다.
이를 위해 App store Connect에서 변경된 dSYM 다운로드

  1. TestFlight
  2. 해당 버전 빌드
  3. 빌드 메타데이터
  4. dYSM 다운로드

댓글