2011-01-12 12 views
0

내 아이폰 앱을 사용하는 고객으로부터 충돌 로그를 받았는데 상징적 인 정보를 얻지 못해서 화려하게 실패했습니다 ... 내가 지시 한대로 온라인에서 찾은 것은 (Mac에서 실행되도록) :아이폰 충돌 로그 분석

symbolicatecrash 충돌 로그 file.crash 기호-file.dSYM>보고 -와 - symbols.crash

  • 충돌-file.crash를 기록 iTunes를 통해 사용자가 얻은 충돌 로그입니다, 텍스트 파일
  • symbol-file.dSYM은 응용 프로그램을 빌드 할 때마다 XCode에 의해 만들어지며 기호 파일을 포함합니다 (시리즈 o F 폴더) 불행하게도 나의 시도가 모두 실패

: - symbolicatecrash의 버전과 나는 (기억하지 않습니다 어디로 & 나는) 그것을 발견했을 때, 출력 심볼 하지 않고, 입력 파일과 동일 - 내 디스크에서 찾은 다른 버전과 함께이 오류 메시지가 나타납니다 (참고 : .dSYM 트리 내에서 심볼 파일 자체를 가리 키려고했으나 여전히 도움이되지 않습니다) :

/Developer/Platforms/iPhoneOS.platform /Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash failedstart.crash ScanBizCards.app.dSYM/Contents/Resources/DWARF/ScanBizCards> crashwithsymbols

otool의 출력을 이해할 수 없습니다 (-> '/ 개발자/플랫폼/\ iPhoneOS.platform \/개발자 \/usr \/bin \/otool -arch armv7 -l/Users/patrickq/Projects /icr/OCR/newOCR/build/Debug-iphonesimulator/ScanBizCards.app/ScanBizCards ') /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash 라인 301에서 확인하십시오.

도와 주실 분 있나요?

심지어 기호 수학 자신을 일을 생각하지 않지만 기호 파일을 여는 방법을 모르겠어요 ...

패트릭

+0

나는 주최자에게 충돌 로그를 끌었습니다 .... 나는 'XY를 상징합니다'라는 메시지를 봅니다 ....하지만 결과를 볼 수 없습니다 ... 어디에서 찾을 수 있는지 말해 줄 수 있습니까? 나는 눈이 멀었습니다. ... – Icky

답변

0

당신이 아이폰 시뮬레이터 디버그에 대한 symbolicatecrash를 실행하는 것 같다 기호를 사용하여 아이폰 장치 빌드를위한 심볼로 패스해야 할 때

0

Xcode의 "빌드 및 아카이브"기능을 사용하여 애플 스토어 또는 사용자에게 앱을 배포하는 경우 크래시 로그 주최자에게 보내어 IDE가 상징화되도록하십시오.

에 정확한 버전의 앱과 .DSYM이 있어야 함을 기억하십시오. 응용 프로그램을 다시 컴파일하면 다른 .DSYM이 생성되고 작동하지 않습니다.

+0

환상적이며, 매력처럼 작동합니다 - 감사합니다 – patrickq

6

symbolicatecrash은 매우 버그가 있으며 스포트라이트 (mdfind)를 사용하여 바이너리/dsym 파일을 찾으려면 현명한 작업을 시도하십시오. 분명히, 그것은 (시뮬레이터에 대한) 당신의 developement에 빌드 제품 중 하나를 발견하고 장치에서 생성 된 crashreport을 symbolicate하려고 그것을 사용

Can't understand the output from otool 
(-> '\/Developer\/Platforms\/iPhoneOS.platform\/Developer\/usr\/bin\/otool 
-arch armv7 -l 
/.../build/Debug-iphonesimulator/ScanBizCards.app/ScanBizCards') 

:이 줄은 단서입니다. 그리고 그것은 비참하게 실패했습니다.

우리 회사의 두 사람이 똑같은 문제가 발생했습니다. 나는 문제가 어떻게 발생했는지 조사하지 않았다. 나는 이것이 아주 드물다는 것을 상상한다. 그렇지 않다면 엄청난 벌레가 이미 고쳐 졌을 것이다.순간, 나는 단지이 매우 원유 해결 방법이 있습니다

  • 제거
  • 시뮬레이터 (내 말은 모든 화신에서 응용 프로그램을 제거 (귀하의 경우 ScanBizCards.app에)이 실행 파일 이름을 언급 당신의 build 폴더의 모든 ~/Library/Application Support/iPhone Simulator/4.3, ~/Library/Application Support/iPhone Simulator/3.2, ...와 같은 다양한 버전의 시뮬레이터에있는 응용 프로그램

이렇게하면 보관 된 응용 프로그램에서만 사용할 수 있습니다. 이번에 symbolicatecrash은 잘못된 버전을 찾아서 올바른 버전을 찾을 수 없습니다.

만약 내가 문제를 재현한다면, 나는이 끔찍한 펄 스크립트를 디버깅하는데 약간의 시간이 걸릴 것이다.

도움이 되었기를 바랍니다.

+0

감사합니다! 시뮬레이터 빌드 디렉토리를 제거하고 시뮬레이터를 리셋하는 것은 저처럼 매력적이었습니다. – csch

+0

참고로, 당신이 제안한'symbolicatecrash' 버그 수정을 구현하는 답변을 추가했습니다. – darvids0n

1

저는 Frederic에서 지적한 동일한 문제가 있습니다. 더 완전하게이 문제를 해결하려면 symbolicatecrash 스크립트에서 sub getSymbolPathFor_dsymUuid을 검색 한 다음 줄을 변경 :

my $cmd = "mdfind \"com_apple_xcode_dsym_uuids == $myuuid\""; 

mdfind 후이 매개 변수를 추가

-onlyin /path/to/your/app/bundles 

을 당신이 저장하고있는 디렉토리를 사용하여 보관 된 번들. 이렇게하면 앱의 올바른 버전을 항상 찾습니다. 당신이 여분의 안전하려면, 그것이 말하는 곳으로 조금 아래로 스크롤 :

my @spotLightSearchForExecutable = `mdfind $executable.app'; # To cover the case where the DSYM's and .app are no located in the same location. 

을 그리고뿐만 아니라 -onlyin /path/to/your/app/bundles를 추가합니다. 이 경로는 위의 행 상태에 대한 주석으로 symbolicatecrash이 .DSYM과 동일한 폴더에서 .app를 찾을 수없는 경우에만 사용됩니다. 다행히도, 두 폴더를 같은 폴더에 저장하면 절대 실행해서는 안되지만 의심이 든다면 안전하고 안전하게 수행하는 것이 좋습니다.