ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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로도 답을 얻지 못해

       해당 방법으로 크래쉬를 확인할 수 있었습니다.

    댓글

Designed by Tistory.