2014-09-03 4 views
0

프로덕션 iOS 응용 프로그램에서 충돌 보고서가 자동으로 우리 서버에 기록됩니다. 내가 symbolicatecrash 명령으로 읽을 수있는 .crash 파일을 생성 할 수있는 방법,iOS 응용 프로그램의 프로덕션 충돌 로그 읽기

Terminating app due to uncaught exception: *** setObjectForKey: object cannot be nil (key: dict_key). 

    0 CoreFoundation      0x2f00dee3 <redacted> + 154 
    1 libobjc.A.dylib      0x397a4ce7 objc_exception_throw + 38 
    2 CoreFoundation      0x2ef4917f <redacted> + 818 
    3 MyAppName       0x0010ef3f MyAppName + 229183 
    4 MyAppName       0x000e5401 MyAppName + 58369 
    5 MyAppName       0x000e4ac1 MyAppName + 56001 
    6 UIKit        0x31843a33 <redacted> + 518 

    ... (Removed for brevity) 

이 정보를 갖는 충돌 로그 [NSException 설명] 및 [NSException callStackSymbols]의 캐릭터 조합은 다음과 같습니다입니까? 이 크래시 로그를 텍스트 파일에 저장하고 이름을 .crash 확장명으로 지정할 수 있습니까?

감사합니다.

+0

이것을 상징하는 전체 표준 Apple 형식의 충돌 보고서가 필요합니다. 또한 행별로 기호가 너무 많이 누락 된 것 같습니다 (예 : 앱의로드 주소) – Kerni

+2

로드 주소는 '0xe4ac1 - 56001 = 0xD7000'입니다. 이 주소로 수동으로 atos를 사용하여 앱의 스택 프레임에 대한 심볼을 가져와야합니다. http://stackoverflow.com/questions/13574933/ios-crash-reports-atos-not-working-as-expected/13576028#13576028 – Kerni

답변

1

앱을 컴파일 할 때 생성 된 dSYM 파일이 필요합니다. 이것을 얻으려면 Xcode의 .app 파일로 가서 마우스 오른쪽 버튼으로 클릭하고 찾기에 표시하면 dSYM 파일이있는 폴더와 앱을 만든 다음 폴더 내에 atos 명령을 실행해야합니다. atos -arch armv7 -o YOURAPP.app '/'yourapp '0xe4ac1 - 56001 = 0xD7000

도와주세요!

+0

안녕하세요, David, 감사합니다. dwarfdump 명령과 메모리 주소 0xD7000을 사용하여 의미있는 것을 보았습니다! 그 번호를 어떻게 생각해 냈어? 그것은 단순한 16 진 빼기처럼 보이지 않습니다. – Andree

+0

그게 전부예요, 당신이 기호를 제거하고자하는 주소를 얻습니다, 그것은 충돌 로그의 오른쪽 열의 행 중 하나입니다 –