Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 차이
- 백준
- concurrency
- 프로퍼티
- Subject
- 옵셔널
- weak
- Self
- 프래그먼트
- 풀이
- 스위프트
- 클로저
- async
- 생명주기
- 알고리즘
- 안드로이드
- 해시
- 프로그래머스
- rx
- 구조체
- observable
- SwiftUI
- Swift
- 자바
- Task
- 연산자
- View
- 리스트뷰
- ios
- RxSwift
Archives
- Today
- Total
study record
[iOS] dSYM이란? 본문
debug dSYM 은 iOS 앱 빌드와 Crashlytics, 디버깅 과정에서 아주 중요한 개념이다.
Firebase Crashlytics 추가하는 작업을 하면서 어떤 개념인지 알고 가면 좋을 것 같아 작성해본다.
dSYM (Debug Symbol File) = 컴파일 시 생성되는 디버깅 정보 파일
- .dSYM은 앱을 빌드할 때 생성되는 디버그 심볼(symbol) 정보가 담긴 파일입니다.
- 기계어 바이너리와 연결된 사람이 읽을 수 있는 함수 이름, 파일명, 라인 정보 등을 저장합니다.
쉽게 말하면:
앱이 crash 나서 0x1043abddc 같은 주소로 죽었을 때,
TeamNewsView.swift:42 같은 정확한 소스코드 위치로 해석해주는 역할을 dSYM이 합니다.
dSYM 파일은 말 그대로 "소스코드와 빌드된 바이너리 간의 연결 고리" 역할을 하며, 그 안에는 다음과 같은 정보들이 압축/구조화된 형태로 저장되어 있습니다.
dSYM은 컴파일 시 생성되는 디버깅 정보 파일입니다.
이 파일 안에는:
- 기계어 주소 (메모리 주소) 와
- 소스코드의 함수, 파일 경로, 줄 번호 등이
👉 1:1로 맵핑되어 저장됩니다. - 앱을 빌드할 때 (DEBUG_INFORMATION_FORMAT = dwarf-with-dsym일 경우) 생성된다.
Debug dSYM이란?
"Debug dSYM"은 일반적으로 디버그 모드(Debug configuration)로 빌드할 때 생성되는 dSYM 파일을 말합니다.
즉:
- Debug 빌드: 개발용. dSYM이 항상 생성됨, 디버깅 편의성 우선
- Release 빌드: 릴리즈용. dSYM은 옵션, 최적화를 위해 일부 기호가 제거되거나 생략됨
Xcode 설정에서 확인하는 곳
Build Settings > Debug Information Format
| DWARF | 빠른 빌드, 디버깅 가능 (단, dSYM 파일은 생성 안 됨) |
| DWARF with dSYM File ✅ | dSYM 파일 생성됨, Crashlytics 사용 시 필수 |
| None | 디버깅 정보 없이 빌드 (크래시 해석 불가) |
→ DWARF with dSYM File을 사용하면 Crashlytics에 필요한 dSYM이 생성됩니다.
안 만들거나 잃어버리면?
- Crashlytics나 Xcode는 기계어 주소만 보여줌 → "이게 도대체 어디서 났는지" 알 수 없음
- 크래시 리포트 분석이 불가능하거나 매우 제한됨
+)
- Crashlytics가 제대로 작동하려면 dSYM이 반드시 필요
- dSYM을 수동 업로드하거나, 자동 업로드 스크립트/기능을 활성화해야 합니다.
++)
Tuist 환경에서 Firebase Crashlytics 세팅 위해서는

이거 대로 하면 빌드 에러남.
아래 처럼 경로 바꿔야 함.
{project_dir}/Tuist/.build/checkouts/firebase-ios-sdk/Crashlytics/run
scripts: [ .post( script: """ $PROJECT_DIR/Tuist/.build/checkouts/firebase-ios-sdk/Crashlytics/run """, name: "Crashlytics dSYM Upload", inputPaths: [ "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}", "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}", "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist", "$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist", "$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)" ] ) ],
'iOS' 카테고리의 다른 글
| [iOS] Liquid Glass in SwiftUI & UIKit (0) | 2025.11.09 |
|---|---|
| [iOS] 번들이란? (.app, .bundle, Copy Bundle Resources) (4) | 2025.07.21 |