-
[iOS] Crash Report 분석Swift 2021. 1. 6. 23:53
개요
앱 심사를 위해 앱을 제출했지만 App Crash로 거절(Reject) 되었을 때,
거절(Reject) 사유와 함께 Crash Log 파일을 함께 보내줍니다.
이렇게 받은 Crash Log 파일을 통해어떤 부분에서 에러가 발생했는지 찾는 방법에 대해 알아봅시다.
앱 심사 거절
앱 심사가 거절 될 경우 앱스토어커넥트를 통해
앱 심사 거절 이유를 확인할 수 있습니다.
위와 같이 앱 Crash를 이유로 리젝이 되었을 경우
아래와 같이 crashlog 텍스트 파일을 첨부해줍니다.
이 텍스트 파일을 열어보면..?
이와 같이 앱에 대한 정보와 해당 기기에 대한 정보
,에러 유형, 크래쉬난 부분 등을 보여줍니다.
하지만 이걸로는 어떤 부분에서
크래쉬가 났는지 확인하기 어렵습니다.
그래서 이 Crash Log 를 읽기 좋게 변환 하는 작업을 거칠 것 입니다.
Crash Log 변환
dSYM 파일 다운로드
Crash Log 파일을 변환하기 위해서는 dSYM파일이 필요합니다.
dSYM : debug symbol file 컴파일러가 소스코드를 기계어로 변환할때 생성되고 역할은 기계어를 다시 소스코드 라인으로 매핑하는 정보를 가진 파일
~/Library/Developer/Xcode/Archives
를 통해서 dSYM 파일을 가져올 수 있지만
AppStore Conect 에서 해당 파일을 다운로드 하겠습니다.
TestFlight -> 문제의 빌드 버전 숫자 클릭 -> 빌드 메타데이터 탭 -> dSYM 다운로드 클릭
dSYM 압축파일을 풀어줍니다.
Crash Log 분석하기
터미널 열어 다운로드한 dSYM 폴더로 이동해줍니다.
crash log 파일에 적혀있던 slice_uuid 를 기억해둡시다.
(저의 경우 : "6268de61-856b-3a22-a4c3-14cdeb30bf73")
이제 명령어를 통해 분석해보겠습니다.
atos -arch arm64 -o [기억해뒀던Slice_uuid].dSYM/Contents/Resources/DWARF/[앱이름] -l [오류4번째문자열] [오류3번째문자열]
위와 같은 명령어로 저의 문제였던 부분을 대입하면
atos -arch arm64 -o 6268de61-856b-3a22-a4c3-14cdeb30bf73.dSYM/Contents/Resources/DWARF/AcrosticPoem_ios -l 0x1001f8000 0x000000010021331c
이런게 사용할 수 있습니다.
해당 내용을 살펴 보면 PoemAddView.addTapped()에서
크래쉬가 일어난 것을 확인할 수 있습니다.
마치며
애플이 첨부해준 Crash Log 파일을 분석하는 법을 알아보았습니다.
해당 방법 외에도 Xcode내의 Device Log를 통해 변환하는 방법도 있지만저의 경우에는 Xcode로도 답을 얻지 못해
해당 방법으로 크래쉬를 확인할 수 있었습니다.
'Swift' 카테고리의 다른 글
[iOS] NaverMap Curve/Arc 경로 라이브러리 (0) 2023.01.16 [iOS] HTML String을 WKWebView로 보여주기 (0) 2022.04.26 [iOS] 화면 캡쳐(Screenshot) 감지 (0) 2021.01.19 [iOS] Label, Button 드래그로 위치 이동시키기 (0) 2021.01.19 [iOS] Apple Silicon(M1)에서 cocoapods 실행하기 (0) 2021.01.07