Search
Duplicate

iOS - dSYM 이란?

생성일
2024/07/05 02:24
태그
슬기로운 인턴생활

iOS - dSYM 이란?

좀 더 개념을 명확히 하기 위해 정리!
앱스토어에 크래쉬로 인해 리젝을 당하면 크래쉬 리포트를 준다.
하지만 이상한 숫자들만 가득한걸,,,
이럴때 필요한 것이 바로 dSYM 파일!

dSYM 이란?

이 이상한 숫자들을 해석할 수 있게 해주는 파일이다.
debug SymBol File
컴파일러가 소스코드를 기계어로 변환할 때 생성되고
역할은 기계어를 다시 소스코드 라인으로 매핑하는 정보를 가진 파일이다.
Build Setting → ‘DEBUG_INFORMATION_FORMAT’ 에서 옵션 확인 가능하다.

dSYM 파일 생성 시점

앱을 Archive 할 때 생성된다.
따라서 앱 크래쉬 리포트를 해석하기 위해선 반드시 dSYM이 포함된 아카이브를 잘 관리해아 한다. (예외적인 경우도 있다)
해당 dSYM 확인할 수 있는 경로 ~/Library/Developer/Xcode/Archives 또는 Xcode -> Window -> Organizer
Plain Text
복사

예외적인 경우

Bitcode 옵션
Bitcode는 IR (Intermediate Reprosentation: 중간 언어) 입이고 App Thining에 관련된 기술이다.
마찬가지로 Build Settings에서 확인할 수 있는 옵션이다.
이 상태를 enable로 하고 앱을 만들시 bitcode로 바이너리 파일이 생성된다.
BC == bitcode
열심히 만든 앱 Bitcode를 enable로 만들시 그림처럼 bitcode로 바이너리가 생성된다.
이 파일을 앱스토어를 통해 올리는 경우 애플에서 변환을 통해 일반적인 바이너리와 dSYM 파일을 생성한다는 그림 그대로의 의미이다.
근데 이것을 왜 사용할까?
일단 dSYM 파일을 관리하기 힘드니 애플에서 직접 만들어서 관리해준다는 의미이다!
아래처럼 Archives 혹은 AppStore에서도 직접 다운 받을 수 있다.
다운로드가 가능함 Bitcode : enable
대신 주의할점이 존재한다.
1.
Bitcode로 생성된 dSYM 파일과 최종적으로 앱스토어에 dSYM은 전혀 다른 파일이다.
2.
크래쉬와 관련된 프레임워크와 사용시 문제가 발생될 수 있다.
a.
Ex) Fabric 같은 경우 dSYM 파일이 필요한데 Bitcode 사용시 앱 빌드 시 산출되는 dSYM이 아니기 때문에, 위의 그림처럼 다운로드해서 업로드해야 정상적으로 출력된다.

결론

dSYM 파일은 빌드(컴파일 + 실행파일을 만드는 과정)시 고유한 dSYM 파일이 생성된다.
앱스토어에서 크래쉬 로그를 보내줄 시 dSYM 파일이 존재하지 않는다면 난독화되어 있는 파일을 해석할 수 없다.
또한 난독화를 해제(애플에선 de-obfuscate 표현)할 수 있다면, 소스코드상에서 크래쉬가 난 소스라인까지 파악이 가능하다.
iOS 시스템에 존재하는 CoreFoundation, UIKitCore와 같은 프레임워크는 메모리 주소값이 같을 수도 있다.
dSYM 생성하도록 설정하는 방법
Xcode → Project → Build Settings → ‘DEBUG_INFORMATION_FORMAT’ 검색 → ‘DWARF with dSYM File’ 선택

다음에 봤을 때 참고하면 좋을 링크