앱을 운영하면서 Firebase Crashlytics를 사용하면 종종 다음과 같은 오류를 보게 된다.
Missing dSYM
Upload missing dSYM files to process crashes
Crashlytics에서 이 메시지가 나타나면 크래시 로그가 제대로 심볼화(symbolicate)되지 않는다.
즉, 실제 코드 위치 대신 메모리 주소만 표시되어 원인을 찾기 어려워진다.
이 글에서는 dSYM 누락 오류가 발생하는 이유와 해결 방법을 정리한다.
dSYM이란 무엇인가
dSYM(Debug Symbol File)은 앱 바이너리를 사람이 읽을 수 있는 코드 정보로 변환하기 위한 디버그 심볼 파일이다.
예를 들어 크래시 로그가 이렇게 보일 수 있다.
0 MyApp 0x00000001034f2a84 0x1034e0000 + 76420
dSYM이 있으면 Crashlytics가 이를 실제 코드로 변환한다.
ViewController.loadData() + 120
그래서 Crashlytics에서 dSYM이 없으면 크래시 분석이 거의 불가능해진다.
Crashlytics에서 dSYM Missing이 발생하는 이유
대표적인 원인은 다음과 같다.
1. dSYM 업로드 스크립트가 실행되지 않음
Xcode Build Phase에 Crashlytics 업로드 스크립트가 없거나 실행되지 않으면 dSYM이 Firebase로 전달되지 않는다.
특히 SPM으로 Firebase를 설치한 경우 자주 발생한다.
2. Bitcode 설정 문제
과거에는 Bitcode 활성화 시 App Store에서 새 dSYM을 생성했다.
하지만 현재 대부분 프로젝트에서는 Bitcode가 비활성화되어 있다.
그래도 과거 설정이 남아 있으면 충돌이 발생할 수 있다.
3. Archive 빌드와 Firebase UUID 불일치
Crashlytics는 dSYM의 UUID 값으로 매칭한다.
따라서
- 다른 빌드의 dSYM
- Debug 빌드 dSYM
을 업로드하면 해결되지 않는다.
dSYM 파일 위치 확인 방법
Archive 후 dSYM은 다음 위치에 생성된다.
Xcode Organizer
→ Archives
→ Show in Finder
→ Products
→ dSYMs
또는 터미널에서 확인할 수도 있다.
dwarfdump --uuid MyApp.app.dSYM
이 UUID가 Firebase에서 요구하는 UUID와 동일해야 한다.
Firebase dSYM 수동 업로드 방법
Crashlytics 콘솔에서 Missing dSYM이 표시되면 수동 업로드도 가능하다.
터미널에서 다음 명령을 실행한다.
firebase crashlytics:symbols:upload \
--app=YOUR_FIREBASE_APP_ID \
PATH_TO_DSYM
업로드가 완료되면 몇 분 후 크래시 로그가 정상적으로 변환된다.
Xcode Build Phase 설정 확인
Crashlytics 자동 업로드가 되도록 Build Phase를 확인한다.
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
이 스크립트가 Run Script Phase에 추가되어 있어야 한다.
SPM 환경에서 발생하는 문제
Swift Package Manager로 Firebase를 설치한 경우 다음 문제가 발생할 수 있다.
- Crashlytics run script 경로 변경
- Archive 빌드에서 script 실행 안됨
- dSYM 자동 업로드 실패
이 경우 run script 경로를 다시 지정해야 한다.
문제 해결 체크리스트
Crashlytics dSYM Missing이 발생하면 다음 항목을 확인한다.
- Xcode Run Script Phase 설정
- Archive 빌드 사용 여부
- dSYM UUID 확인
- Firebase 콘솔 요구 UUID 확인
- 필요 시 수동 업로드
이 과정을 거치면 대부분 문제를 해결할 수 있다.
마무리
Firebase Crashlytics는 iOS 앱 운영에서 매우 중요한 도구다.
하지만 dSYM이 누락되면 크래시 로그 분석이 거의 불가능해진다.
따라서 다음 두 가지를 항상 확인하는 것이 좋다.
- Archive 빌드 시 dSYM 생성 여부
- Crashlytics 업로드 스크립트 정상 실행 여부
이 두 가지만 관리해도 대부분의 Crashlytics 문제를 예방할 수 있다.
Firebase Crashlytics 관련 글
'IT' 카테고리의 다른 글
| SwiftUI NavigationStack 사용 방법 정리 (iOS 16+) (0) | 2026.03.14 |
|---|---|
| Firebase Crashlytics SPM 설치 방법 (Swift / iOS) (1) | 2026.03.14 |
| Firebase Crashlytics에서 UUID Missing 해결 방법 (iOS / Swift) (0) | 2026.03.14 |
| Firebase Crashlytics 크래시 로그 확인하는 방법 (Swift / iOS) (0) | 2026.03.14 |
| Firebase Crashlytics 설정 방법 (Swift / iOS) (0) | 2026.03.14 |