출처:http://locoda.tistory.com/63
이 글은 제가 쓴 글이 아니며, 저희 팀 조전임님께서 네이버 맥부기 카페에 쓴 글을 허락하에 가져온 글입니다. 좋은 글 써주신 조전임님께 감사의 말씀을 드립니다.
안녕하세요. 근 이주일 동안 주구장창 비가 내리는데.. 맥부기 회원님들 건강 잘 챙기시기 바래요. 무엇보다 돈, 업무, 코딩... 다 중요하지만 서도 건강이 제일 아니겠어요? 저도 요새 계속된는 철야로 인해서 쿨럭쿨럭 감기 기운이 약간 돌기 시작하네요. 무엇보다 건강부터 지키시길....
제가 오늘 할 얘기는 Crash Report 의 대한 이야기 입니다. 보통 앱을 완성하게 되면, 그전에 테스트를 거치면서 디버깅을 하게 됩니다. 이때 NSZombie 같은 것들을 쓰게 되고 또 Instruments같은 툴을들 이용하면서 최적화 작업을 하게 되지요. 자 이제 지겨운 디버깅 시간이 끝납니다. 앱스토어에도 등록이 끝납니다. 정말 지겨운 시간들이 지나갔네요. 앱도 판매가 시작되구요. 그런데 어느 순간부터 리뷰에 앱이 크래쉬가 난다라는 리뷰들이 보이기 시작하죠. 아 나한테는 안보이는데 무슨 크래쉬일까;;;;; 정말 고민하게 되죠.
물론 이런 경우가 아니더라도 테스터에게서 크래쉬가 났다고 보고 받을수도 있습니다. 이럴 경우 어떻게 처리해야 될까 어디부터가 문제인지 고민하게 됩니다. 이럴경우 Crash Report를 이용하게 됩니다.
IOS의 경우, 앱이 정상적으로 작동되지 않고 팅기는(?) 현상이 발생할 경우, 시스템에서 그걸 인지하고서 크래쉬 리포트라는 녀석을 작성하게 됩니다. 그럼 이녀석은 도대체 어디에 있는 것일까요? 애플에서 제공하는 테크 노트에 따르면
Mac OS X: ~/Library/Logs/CrashReporter/MobileDevice/<DEVICE_NAME>
Windows XP: C:\Documents and Settings\<USERNAME>\Application Data\Apple Computer\Logs\CrashReporter\MobileDevice\<DEVICE_NAME>
Windows Vista or 7: C:\Users\<USERNAME>\AppData\Roaming\Apple Computer\Logs\CrashReporter\MobileDevice\<DEVICE_NAME>
그건 Xcode의 Organizer를 이용하시면 됩니다. Xcode4의 Organizer 에서 Devices 를 선택하시면 시스템에서 사용하고 있는 프로비저닝 정보등을 보실수 있고 연결되어 있는 디바이스를 보실수 있을겁니다. 우리가 하려는 것은 받은 크래쉬 리포트를 봐야 하는것이기 때문에 밑에 네모로 표시되어 있는 Import 버튼을 누릅니다. 해당 녀석을 추가 시켜 주게 되면 해당 크래쉬 리포트를 볼수 있지요. Xcode4에서는 기존에 자신이 가지고 있는 앱 정보와 비교하여서 크래쉬 리포트를 심볼화 작업을 하여 뿌려 주게 됩니다.
보통은 여기서 여러분들이 원하는 크래쉬 나는 장소를 찾을 수 있습니다. 하지만 문제가 있지요. 어떤넘들은 아주 잘 보이는데 어떤넘은 이상한 메모리 주소와 외계어로 쓰여진것들을 볼수 있습니다. 위에 빨간색 박스를 쳐놓은 부분이 어플에서 보내는 코드입니다. 아 난감하죠 거의 다왔는데 왜 심볼이 안보이는거야 ㅡ,.ㅡ; 아 좌절입니다. OTZ ;; 하지만 일어서야 겠죠? ㅎㅎ (개인적으로 자료들을 좀 찾아보니 이넘의 Xcode4의 심볼화 기능이 병맛이라네요..... 으이구 좀 잘보이게 해줘 애플~)
그럼 이때 과연 이 안보이는 심볼을 어떻게 보이게 할것이냐? 이것이 문제입니다. 이때 중요한 부분이 있습니다. 크래쉬 리포트를 비교를 하실때 정말 중요한것은 자신이 기존에 앱스토에 저장한 바이너리가 있어야 합니다. 안그러면 이상한 정보를 찾게 됩니다.
여러분들이 앱스토어에 올리신 버전을 절대로 지우지 마시고 항상 어딘가에 저장을 해놓고 계셔야 합니다. 그래야 크래쉬 리포트를 이용할수 있습니다.
자 그럼 그 정보를 어떻게 볼까요? 일단 간단하게 Xcode4에서 Achives라는 탭을 보겠습니다. 이탭은 여러분들이 앱을 등록하고 올리실때 많이 보시는 화면일겁니다. 그럼 크래쉬 리포트를 받은 녀석을 선택한후, Show in Finder로 들어갑니다. 오우 Achives파일들이 보이네요. 이녀석들은 패키징이 되어 있습니다.


다시 한번 마우스 오른쪽버튼을 눌러서 패키지 정보보기를 한후, 안으로 들어가 보면 위의 위치에 dSYM 파일과 app 파일을 볼수 있을 겁니다. 우리는 이 두 녀석을 사용해야 하죠 그럼 이 두녀석을 선택해서 복사하여 바깥으로 끌어다 놓습니다.
그리고 다시 Organizer쪽에서 Export를 하시든지 기존에 가지고 있던 크래쉬 파일을 같은 공간에 놓습니다.
그리고 터미널을 열어봅니다. 자 명령어를 입력해보죠
atos -arch armv6 -o 앱이름.app/앱이름 메모리주소 입력합니다.
사실 저도 이런 문제때문에 몇일을 끙끙싸매고 전전긍긍했었습니다. 아 Instruments를 돌려도 이상한 점이 없고 도데체 무엇인가? 하고 말이죠...... 여러분들꼐서는 부디 이런일이 없길 바라며 이글을 올립니다. 부끄럽게도 제가 만든 어플 이름이 노출이 되었는데 돌을 던지지 마시길 ㅎㅎ; 저도 이번 업데이트로 인해 다시 한번 배우는 시간을 가졌습니다. 그럼 오늘도 즐거운 하루 되시길 바라며 이번 글을 마치겠습니다.
'iPhone Dev' 카테고리의 다른 글
네비게이션 바 back 버튼 타이틀 변경 (0) | 2013.04.08 |
---|---|
CGRect -> NSString (0) | 2013.03.18 |
NSData to NSString / NSString to NSData (0) | 2012.12.27 |
날짜관련 (0) | 2012.12.27 |
UIActivityIndicatorView 사용 (0) | 2012.10.05 |