본문 바로가기
개발/기타

[Jenkins] iOS 크래쉬 로그 심볼릭(Symbolicate)

by 가리봉맨 2019. 9. 6.
반응형

젠킨스 빌드로 만든 ipa파일을 adhoc 인증서로 기기에 설치했다. 앱이 크래쉬 돼서 Xcode에 연결해봤는데 게임 코드 부분이 심볼릭이 되지 않고 알 수 없는 주소 값만 표시됐다. 프로젝트 코드를 공개할 수 없어서 구글링으로 찾은 이미지로 대체한다. 대충 느낌만 보시길.. 

이미지 출처: https://link.medium.com/bKoGEtlpKZ

직접 Xcode를 이용해서 빌드했다면 Xcode가 자동으로 해당 ipa 파일과 짝을 이루는 dSYM 파일을 찾아서 게임 코드로 변환시켜 준다. 젠킨스 빌드 시에는 조금 번거로운 과정을 거쳐야 한다. 먼저 빌드를 하기 전에 준비 작업이 필요하다. 해당 프로젝트의 빌드 셋팅에 다음과 같이 dSYM 파일을 zip 파일로 압축하고 저장하는 쉘 스크립트를 추가한다.

/usr/bin/zip -r build/${ARCHIVE_NAME}.dSYM.zip build/${ARCHIVE_NAME}.xcarchive/dSYMs/ap.app.dSYM

크래쉬가 난 뒤에는 다음과 같이 진행한다. 먼저 임의의 폴더를 하나 만든다. 여기에 ipa 파일과 저장해 둔 dSYM.zip 파일을 복사하고 압축을 푼다. ipa파일은 먼저 확장자를 zip파일로 변경해야 한다. 이렇게 하면 이제부터 Xcode가 해당 ipa와 짝을 이루는 dSYM 파일을 찾을 수 있다.

준비는 끝났다. 이제 Xcode를 실행해서 크래쉬 로그를 확인하면 이상한 주소 값이 게임 코드(클래스/메서드명)로 변환돼서 보인다. 글이 너무 짧은 것 같아 Xcode에서 크래쉬 로그를 보는 과정을 추가로 적는다. 

  1. Xcode를 실행한다.
  2. 메뉴에서 Windows -> Device & Simulators 를 선택한다.
  3. 기기를 선택하고 View Debug Logs 버튼을 클릭한다.

출처: https://stackoverflow.com/questions/50033978/xcode-9-3-there-is-no-way-to-see-live-device-logs

만약 자동으로 변환이 되지 않는다면 왼쪽 패널에서 해당 크래쉬 덤프를 선택하고 마우스 오른쪽 버튼을 클릭한다. 그리고 Re-Symbolicate Log 를 선택해서 수동으로 변환한다.

아래 유니티 서포트 페이지를 많이 참고했다.

https://support.unity3d.com/hc/en-us/articles/208593736-How-can-I-symbolicate-iOS-crash-logs-from-projects-generated-with-Cloud-Build-

 

How can I symbolicate iOS crash logs from projects generated with Cloud Build?

Symptoms I installed an app from Cloud Build and it crashed. The crash log has no symbols when opened on my OSX device. Cause Symbol files are generated by Xcode, but Unity Cloud Build does...

support.unity3d.com

끝.

반응형

댓글