iPhone 앱 충돌 보고서를 상징합니다
-
13-09-2019 - |
문제
나는 iPhone 앱의 충돌 보고서를 시도하고 상징하려고합니다.
iTunes Connect의 충돌 보고서를 검색했습니다. App Store에 제출 한 응용 프로그램 바이너리가 있으며 빌드의 일부로 생성 된 DSYM 파일이 있습니다.
스포트라이트로 색인화 된 단일 디렉토리 안에 이러한 파일이 모두 함께 있습니다.
지금 뭐야?
나는 호출을 시도했다 :
symbolicatecrash crashreport.crash myApp.app.dSYM
그리고 그것은 크래시 보고서에있는 것과 동일한 텍스트를 상징하지 않고 시작하도록 시작합니다.
내가 뭔가 잘못하고 있습니까?
해결책
Apple의 충돌 보고서를 분석하는 단계 :
릴리스 된 .App 파일을 앱 스토어로 복사하고, 출시 당시 생성 된 .dsym 파일과 사고 보고서가 Apple에서 폴더.
터미널 응용 프로그램을 열고 위의 폴더로 이동 (사용
cd
명령)운영
atos -arch armv7 -o APPNAME.app/APPNAME MEMORY_LOCATION_OF_CRASH
. 메모리 위치는 보고서에 따라 앱이 충돌 한 위치 여야합니다.
전: atos -arch armv7 -o 'APPNAME.app'/'APPNAME' 0x0003b508
이것은 당신에게 정확한 줄, 메소드 이름을 보여 주면 충돌이 발생했습니다.
전: [classname functionName:]; -510
IPA를 상징합니다
상징적 인 IPA를 사용하는 경우 - extention .ipa를 .zip으로 이름 바꾸면 추출한 다음 앱이 포함 된 페이로드 폴더를 얻을 수 있습니다. 이 경우 .dsym 파일이 필요하지 않습니다.
메모
앱 바이너리에 심볼이 제거되지 않은 경우에만 작동 할 수 있습니다. 기본적으로 릴리스 빌드는 기호를 제거했습니다. 프로젝트 빌드 설정에서 "복사하는 동안 스트립 디버그 기호"에서 변경할 수 있습니다.
자세한 내용은 이것을 참조하십시오 게시하다
다른 팁
충돌 로그를 상징하고 마지막으로 성공하기 위해이 모든 답변을 읽은 후, SymbolicAteCrash의 호출이 기호 출력을 생성하지 않는 이유를 결정하기 위해 여기에 실제로 중요한 점이 있다고 생각합니다.
충돌 로그를 상징 할 때 함께 맞아야하는 3 개의 자산이 있습니다.
- 충돌 로그 파일 자체 (즉
example.crash
)), Xcode의 주최자에서 내보내거나 iTunes Connect에서 수신했습니다. - 그만큼
.app
패키지 (예 :example.app
) 그 자체에는 충돌 로그에 속하는 앱 바이너리가 포함되어 있습니다. 당신이있는 경우.ipa
패키지 (예 :example.ipa
) 그런 다음 추출 할 수 있습니다.app
압축을 풀어 패키지.ipa
패키지 (예 :unzip example.ipa
). 그 후.app
패키지는 추출 된 내에 있습니다Payload/
폴더. - 그만큼
.dSYM
디버그 기호를 포함하는 패키지 (즉example.app.dSYM
)
기호를 시작하기 전에 모든 아티팩트가 일치하는지 확인해야합니다. 즉, 충돌 로그가 귀하가 가진 이진에 속하며 디버그 기호는 해당 바이너리의 빌드 중에 생성 된 것임을 의미합니다.
각 바이너리는 충돌 로그 파일에서 볼 수있는 UUID로 언급됩니다.
...
Binary Images:
0xe1000 - 0x1f0fff +example armv7 <aa5e633efda8346cab92b01320043dc3> /var/mobile/Applications/9FB5D11F-42C0-42CA-A336-4B99FF97708F/example.app/example
0x2febf000 - 0x2fedffff dyld armv7s <4047d926f58e36b98da92ab7a93a8aaf> /usr/lib/dyld
...
이 추출물에서 충돌 로그는 example.app/example이라는 앱 바이너리 이미지에 속합니다. aa5e633efda8346cab92b01320043dc3
.
DwarfDump로 가지고있는 이진 패키지의 UUID를 확인할 수 있습니다.
dwarfdump --uuid example.app/example
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app/example
그런 다음 디버그 기호가 해당 바이너리에 속하는지 확인해야합니다.
dwarfdump --uuid example.app.dSYM
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app.dSYM/Contents/Resources/DWARF/example
이 예에서는 모든 자산이 함께 맞으며 스택 트레이스를 상징 할 수 있어야합니다.
진행 symbolicatecrash
스크립트:
Xcode 8.3에서는 스크립트를 통해 스크립트를 호출 할 수 있어야합니다.
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash -v example.crash 2> symbolicate.log
거기에 없으면 a find . -name symbolicatecrash
xcode.app 디렉토리에서 찾으십시오.
보시다시피 더 이상 매개 변수가 없습니다. 따라서 스크립트는 스포트라이트 검색을 실행하여 응용 프로그램 바이너리 및 디버그 기호를 찾아야합니다. 호출되는 특정 색인으로 디버그 기호를 검색합니다. com_apple_xcode_dsym_uuids
. 이 검색을 직접 수행 할 수 있습니다.
mdfind 'com_apple_xcode_dsym_uuids = *'
resp.
mdfind "com_apple_xcode_dsym_uuids == AA5E633E-FDA8-346C-AB92-B01320043DC3"
첫 번째 스포트라이트 호출은 모든 색인화 된 DSYM 패키지를 제공하고 두 번째 패키지는 .dSYM
특정 UUID가있는 패키지. 스포트라이트가 당신을 찾지 못한다면 .dSYM
그런 다음 패키지 symbolicatecrash
둘 다. 당신 이이 모든 일을한다면, 즉 당신의 하위 폴더에서 ~/Desktop
스포트라이트는 모든 것을 찾을 수 있어야합니다.
만약에 symbolicatecrash
당신을 찾습니다 .dSYM
패키지 다음과 같은 줄이 있어야합니다. symbolicate.log
:
@dsym_paths = ( <SOME_PATH>/example.app.dSYM/Contents/Resources/DWARF/example )
당신을 찾는 것 .app
다음과 같은 스포트라이트 검색 패키지 symbolicatecrash
:
mdfind "kMDItemContentType == com.apple.application-bundle && (kMDItemAlternateNames == 'example.app' || kMDItemDisplayName == 'example' || kMDItemDisplayName == 'example.app')"
만약에 symbolicatecrash
당신을 찾습니다 .app
패키지 다음 추출물이 있어야합니다 symbolicate.log
:
Number of symbols in <SOME_PATH>/example.app/example: 2209 + 19675 = 21884
Found executable <SOME_PATH>/example.app/example
-- MATCH
모든 리소스를 찾으면 symbolicatecrash
충돌 로그의 상징화 된 버전을 인쇄해야합니다.
그렇지 않은 경우 DSYM 및 .App 파일을 직접 전달할 수 있습니다.
symbolicatecrash -v --dsym <SOME_PATH>/<App_URI>.app.dSYM/<APP_NAME>.app.dsym <CRASHFILE> <SOME_OTHER_PATH>/<APP_NAME>.app/<APP_NAME> > symbolicate.log
메모: 상징화 된 백 트레이스는 말단에 출력됩니다. symbolicate.log
.
최신 버전의 Xcode (3.2.2)를 사용하면 충돌 보고서를 Xcode 조직자의 장치 로그 섹션으로 드래그하여 삭제할 수 있으며 상징적으로 자동으로 표시됩니다. Build & Archive (Xcode 3.2.2의 일부)를 사용하여 해당 버전의 앱을 구축하면 이것이 가장 효과적이라고 생각합니다.
다음 단계를 사용하여 성공적으로 수행했습니다.
1 단계: 데스크탑에서 폴더를 만들면 "CrashReport"에 이름을 지정하고 3 개의 파일 ( "MyApp.App", "MyApp.App.Dsym", "MyApp_2013-07-18.Crash")을 넣습니다.
2 단계: Finder를 열고 응용 프로그램으로 이동하여 Xcode 응용 프로그램을 찾을 수있는 응용 프로그램으로 이동 하여이 간단한 경로를 따른 후에이 간단한 경로를 따라 "패키지 내용 표시"를 클릭하십시오. "내용-> 개발자-> 플랫폼-> iPhoneos.platform-> 개발자-> 라이브러리-> privateframeworks->dtdevicekit.framework-> 버전-> A-> 리소스 "
또는
"내용-> 개발자-> 플랫폼-> iPhoneos.platform-> 개발자-> 라이브러리-> privateframeworks->dtdevicekitbase.framework-> 버전-> A-> 리소스 "
또는
Xcode 6 이상의 경우 경로는 Applications/xcode.app/Contents/SharedFrameworks/dtdeviceKitbase.framework/versions/a/resources가 있습니다.
"SymbolicAteCrash"파일을 찾은 경우 이것을 복사하여 "CrashReport"폴더에 붙여 넣습니다.
3 단계 : : 터미널을 시작 하고이 3 명령을 실행하십시오
CD/사용자/MAC38/Desktop/CrashReport 및 Enter 버튼을 누릅니다.
Export Developer_dir = "/applications/xcode.app/contents/developer"및 Enter를 누릅니다.
- ./symbolicatecrash -a -v myapp_2013-07-18.Crash myapp.app.dsym을 누르고 Enter를 누르십시오.
Xcode를 사용하여 충돌 보고서를 자동으로 상징하는 단계 :
Xcode 9 용으로 업데이트되었습니다
연결하다 어느 Mac에 iOS 장치 (예, 물리적, 그렇습니다. 이것이 바보 같은 것을 알고 있습니다)
기다리다. 나타나는 데 1 분이 걸릴 수 있습니다. 아마도
Command-A
그 다음에Delete
이것을 속도로 올릴 것입니다.중요한 문서화되지 않은 단계 : iTuneSconnect에서 얻은 충돌 보고서의 이름을 바꿉니다.
.txt
연장.crash
확대
그런 다음 Xcode는 충돌 보고서를 상징하고 결과를 표시합니다.
원천: https://developer.apple.com/library/ios/technotes/tn2151/_index.html
앱에서 Airbrake를 사용하여 원격 오류 로깅의 상당히 잘 작동합니다.
배경계에 필요한 경우 ATO로 상징하는 방법은 다음과 같습니다.
Xcode (4.2)에서 주최자로 이동하여 .ipa 파일이 생성 된 아카이브를 마우스 오른쪽 버튼으로 클릭하십시오.
터미널에서 CD xcrarchive로 예를 들어
MyCoolApp 10-27-11 1.30 PM.xcarchive
다음을 입력
atos -arch armv7 -o 'MyCoolApp.app'/'MyCoolApp'
(단일 따옴표를 잊지 마십시오)나는 그 부름에 내 상징을 포함하지 않습니다. 당신이 얻는 것은 빈 줄의 블록 커서입니다.
그런 다음 해당 블록 커서에 심볼 코드를 복사/붙여 넣고 Enter를 누릅니다. 당신은 다음과 같은 것을 볼 수 있습니다.
-[MyCoolVC dealloc] (in MyCoolApp) (MyCoolVC.m:34)
블록 커서로 돌아와서 다른 기호로 붙여 넣을 수 있습니다.
첫 번째 비트를 다시 입력하지 않고 한 항목 하나를 뒤집을 수있는 것은 좋은 시간 절약입니다.
즐기다!
또한 Symplicate Crash를 실행하기 전에 DSYM, App Bundle 및 Crash Log를 동일한 디렉토리에 함께 넣습니다.
그런 다음 .profile에 정의 된이 기능을 사용하여 SymbolicAteCrash 실행을 단순화합니다.
function desym
{
/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash -A -v $1 | more
}
추가 된 주장이 도움이 될 수 있습니다.
명령을 실행하여 스포트라이트를 "확인"하는지 확인할 수 있습니다.
mdfind 'com_apple_xcode_dsym_uuids = *'
디렉토리에있는 DSYM을 찾으십시오.
참고 : 최신 Xcode에서 더 이상 개발자 디렉토리가 없습니다. 이 유틸리티는 여기에서 찾을 수 있습니다.
/applications/xcode.app/contents/sharedframeworks/dtdevicekitbase.framework/vers iions/a/resources/symbolicatecrash
Xcode 6.1.1에 대한 간단하고 업데이트 된 답변.
단계
1.xcode> 창> 장치.
2. 장치 섹션의 장치 목록에서 장치를 선택하십시오.
3. 장치 로그보기를 선택하십시오.
4. 모든 로그 섹션에서 보고서를 직접 드래그 할 수 있습니다.
5.xcode는 귀하의 충돌 보고서를 자동으로 상징합니다.
6. 날짜/시간을 충돌 보고서에 언급 된 날짜/시간과 일치시켜 기호 충돌 보고서를 찾을 수 있습니다.
몇 년 동안 앱을 개발 해 왔지만 이진을 처음으로 디버깅하는 것이 처음이었고 모든 파일이 어디에있는 위치를 파악하는 완전한 멍청이처럼 느껴졌습니까? 알아 내기 위해 여러 게시물을 읽어야했습니다. 그림은 천 단어의 가치가 있으며이 게시물이 미래에 다른 사람에게 도움이되기를 바랍니다.
1- 먼저 iTuneConnect로 이동하여 충돌 로그를 다운로드하십시오. 참고 : 대부분의 경우 "보고서가 표시 될 보고서가 너무 적은 보고서를 제출 한 것"과 같은 것을 얻을 수 있습니다. 기본적으로 충분한 사용자는 Apple에 충돌 로그 보고서를 제출하지 않았으므로 해당 시점에서 아무 것도 할 수 없습니다.
2- 이제 바이너리 IT를 Apple에 제출 한 이후 코드를 변경하지 않았다면 해당 프로젝트의 Xcode를 시작하고 제품-> 아카이브를 다시 수행하십시오. 그렇지 않으면 최신 제출 된 바이너리를 찾아 마우스 오른쪽 버튼으로 클릭하십시오.
Xcode 4.2.1에서 열려 있습니다 조직자, 그 다음으로 가십시오 라이브러리/장치 로그 .Crash 파일을 충돌 로그 목록으로 드래그하십시오. 몇 초 후에 당신을 상징합니다.
원래 빌드가 보관 된 것과 동일한 Xcode 인스턴스를 사용해야합니다 (예 : 빌드의 아카이브는 조직자).
Xcode 4를 사용하면 작업이 훨씬 간단합니다.
- 열려 있는 조직자,
- 클릭 도서관 | 장치 로그 왼쪽 열에서
- 클릭 "수입"화면 하단의 버튼 ...
그리고 Voilà. 로그 파일은 귀하를 위해 자동으로 가져오고 상징화됩니다. 만약 당신이 건물을 사용하여 보관 한 경우 xcode-> 제품 -> 아카이브 첫 번째.
마법의 Xcode 조직자는 내 앱을 상징하는 것에 대해 마법이 아닙니다. 실패한 앱 제출에서 Apple에서 돌아 왔다는 충돌 보고서에 대해 전혀 상징이 없습니다.
명령 줄을 사용하여 충돌 보고서를 .App 파일 (상점에 제출 한) 및 .dsym 파일과 동일한 폴더에 넣었습니다.
$ symbolicatecrash "My App_date_blahblah-iPhone.crash" "My App.app"
이것은 핵심 기초 코드가 아닌 내 앱에 대한 기호 만 제공했지만 주최자가 나에게 제공하는 숫자 덤프보다 낫고 앱이 가지고있는 충돌을 찾아서 수정하기에 충분했습니다. 기초 상징을 얻기 위해 이것을 확장하는 방법을 알고 있다면 감사하겠습니다.
제 경우에는 사고 보고서를 우편에서 주최자로 직접 드래그했습니다. 어떤 이유로, 그로 인해 충돌 보고서가 상징화되는 것을 막았습니다 (이유를 알고 싶습니다).
충돌 보고서를 먼저 데스크탑에 복사 한 다음 주최자로 드래그하면 제대로 상징적으로 만들었습니다.
매우 구체적인 경우, 알고 있습니다. 그러나 만일을 대비하여 공유 할 것이라고 생각했습니다.
SymbolicAteCrash와 관련된 또 다른 문제는 다음과 같습니다. 번들에 공백이있는 앱에서는 작동하지 않습니다 (예 : 'Test App.App'). 제출할 때 이름으로 공간을 가질 수는 없으므로 어쨌든 제거해야하지만 이미 분석이 필요한 충돌이있는 경우 SymbolicAteCrash (4.3 GM)를 사용합니다.
240c240
< my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == $exec_name.app\"";
---
> my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == '$exec_name.app'\"";
251c251
< my $cmd = "find \"$archive_path/Products\" -name $exec_name.app";
---
> my $cmd = "find \"$archive_path/Products\" -name \"$exec_name.app\"";
Airbrake를 사용하는 사람들에게는 위의 확실한 반응이 있지만 조정하지 않고는 효과가 없습니다.
일부 메모리 주소에서 작동하지만 다른 메모리 주소는 작동하지 않습니다. 이유는 확실하지 않습니다 ...
- 데스크탑 또는 어디에서나 새로운 Dir를 만듭니다
- Xcode Organizer에서 해당 아카이브를 찾으십시오
- Finder에서 공개하기 위해 더블 탭
- 번들 내용을 표시하려면 더블 탭
- .dsym 파일을 복사하고 .App 파일을 New Dir로 복사하십시오
- 새로운 Dir에 CD
- 이 명령을 실행하십시오 : atos -arch armv7 -o 'vimeo.app'/'vimeo'
- 터미널은 대화식 이동에 들어갑니다
- 메모리 주소에 붙여 넣고 Enter를 누르면 메소드 이름과 줄 번호가 출력됩니다.
- 또는 하나의 주소에 대한 정보를 얻으려면 atos -arch armv7 -o 'vimeo.app'/'vimeo'를 입력하십시오.
나를 위해 일한 조합은 다음과 같습니다.
- DSYM 파일을 충돌 보고서가있는 디렉토리에 복사합니다.
- 앱이 포함 된 IPA 파일을 압축 해제합니다 ( 'unzip myapp.ipa')
- 결과 폭발 된 페이로드에서 응용 프로그램 바이너리를 사고 보고서 및 기호 파일과 동일한 폴더로 복사하십시오 ( "myapp.app/myapp")
- Xcode 주최자 내에서 충돌 보고서를 가져 오거나 재교육
사용 아토스 충돌 보고서에있는 주소와 오프셋으로 올바른 기호 정보를 해결할 수 없었습니다. 내가이 일을했을 때, 나는 더 의미있는 것을 보았고, 합법적 인 스택 추적 인 것 같습니다.
제대로 실행되도록 SymbolicAteCrash 스크립트를 많이 해킹해야했습니다.
내가 알 수있는 한, SymbolicAteCrash는 이제 .app을 .dsym과 동일한 디렉토리에 있어야합니다. .DSYM을 사용하여 .App을 찾지 만 DSYM을 사용하여 기호를 찾지 않습니다.
이 패치를 시도하기 전에 SymbolicateCrash의 사본을 만들어 DSYM에서 볼 수 있습니다.
getymbolpathfor_dsymuuid 함수의 212 행
212 my @executablePath = grep { -e && ! -d } glob("$dsymdir" . "/Contents/Resources/DWARF/" . $executable);
matchesuuid 함수의 줄 265 정도
265 return 1;
이것은 간단합니다. 많이 검색 한 후 전체 충돌 로그 파일을 상징하는 명확한 단계를 찾았습니다.
- 폴더에 .app, crash_report 및 dsym 파일을 복사하십시오.
- Xcode로 장치를 연결하십시오
- 그런 다음 창으로 이동 -> 장치 선택 -> 장치 로그보기
- 그런 다음이 장치를 선택하고 모든 로그를 삭제하십시오.
- 장치 로그 섹션에서 충돌을 드래그 앤 드롭합니다. 충돌을 자동으로 상징합니다. 보고서를 마우스 오른쪽 버튼으로 클릭하고 내보내십시오.
행복한 코딩,
리야즈
나는 선호한다 스크립트 그것은 내 충돌 로그를 모두 상징합니다.
전제 조건
폴더를 만들고 4 가지를 넣으십시오.
symbolicatecrash
Perl Script- 위치를 알려주는 답이 많이 있습니다.충돌과 일치하는 빌드의 아카이브 (Xcode Organizer에서 간단한
Show in Finder
그리고 복사) [이것이 필수인지 확실하지 않습니다모든
xccrashpoint
패키지 - (Xcode Organizer에서.Show in Finder
, 디렉토리의 모든 패키지를 복사하거나 상징화하려는 단일 XCCrashPoint를 복사 할 수 있습니다).짧은 스크립트를 디렉토리에 추가하십시오.
#!/bin/sh echo "cleaning old crashes from directory" rm -P *.crash rm -P *.xccrashpoint rm -r allCrashes echo "removed!" echo "" echo "--- START ---" echo "" mkdir allCrashes mkdir symboledCrashes find `ls -d *.xccrashpoint` -name "*.crash" -print -exec cp {} allCrashes/ \; cd allCrashes for crash in *.crash; do ../symbolicatecrash $crash > ../symboledCrashes/V$crash done cd .. echo "" echo "--- DONE ---" echo ""
대본
스크립트를 실행하면 2 개의 디렉토리가 나타납니다.
allCrashes
- 모든 충돌이 모든 것입니다xccrashpoint
거기있을 게.symboledCrashes
- 동일한 충돌이지만 이제는 모든 기호가 있습니다.스크립트를 실행하기 전에 오래된 충돌에서 디렉토리를 정리할 필요가 없습니다. 자동으로 청소됩니다. 행운을 빕니다!
충돌을 상징하려면 Spotlight는 Apple에 제출 한 이진을 동시에 생성 한 .dsym 파일을 찾을 수 있어야합니다. 기호 정보가 포함되어 있으므로 사용할 수없는 경우 운이 좋지 않습니다.
나는 여기에 아무것도 "일하는 것"이라는 사실에 대해 조금 심술 get 다. 그래서 나는 약간의 조사를했다. 그리고 결과는 다음과 같습니다.
설정 : 보고서를받는 Quincykit 백엔드. 그들이 내가 제안한 것을 알아 내기 위해 무엇을 제안했는지 알아낼 수 없었기 때문에 상징화가 설정되지 않았습니다.
수정 사항 : 온라인 서버에서 충돌 보고서를 다운로드합니다. 그들은 '충돌'이라고하며 기본적으로 ~/ 다운로드/ 폴더로 이동합니다. 이를 염두에 두고이 스크립트는 "올바른 일을 수행"하며 충돌 보고서는 Xcode (조직자, 장치 로그)로 이동하고 기호가 수행됩니다.
대본 :
#!/bin/bash
# Copy crash reports so that they appear in device logs in Organizer in Xcode
if [ ! -e ~/Downloads/crash ]; then
echo "Download a crash report and save it as $HOME/Downloads/crash before running this script."
exit 1
fi
cd ~/Library/Logs/CrashReporter/MobileDevice/
mkdir -p actx # add crash report to xcode abbreviated
cd actx
datestr=`date "+%Y-%m-%d-%H%M%S"`
mv ~/Downloads/crash "actx-app_"$datestr"_actx.crash"
Quincykit/PLCR을 사용하는 경우 두 가지 작업을 수행하여 Xcode Organizer를 드래그 앤 드롭 할 수있는 곳으로 물건을 자동화 할 수 있습니다.
첫째, 원격 스크립트 관리자/actionapi.php ~ line 202를 편집해야합니다. 타임 스탬프가 오른쪽으로 표시되지 않는 것 같습니다. 따라서 파일은 Xcode가 인식하지 못하는 'Crash'라는 이름으로 끝납니다 (그것은 무언가를 원합니다. 도트 충돌) :
header('Content-Disposition: attachment; filename="crash'.$timestamp.'.crash"');
둘째, Quincykit bwcrashreporttextformatter의 iOS 측에서 M ~ Line 176에서 변경 @"[TODO]"
에게 @"TODO"
나쁜 캐릭터를 돌아 다니기 위해.
ATOS가 더 이상 사용되지 않으므로 OSX 10.9 이상을 실행하는 경우 실행해야 할 수도 있습니다.
xcrun atos
경고 :/usr/bin/atos가 움직이고 있으며 향후 OS X 릴리스에서 제거됩니다. 이제 Xcode 개발자 도구에서 다음을 통해 호출 할 수 있습니다.
xcrun atos
TextWrangler를 사용하여 원래 앱 업로드 바이너리 거부에서 오류를 정확히 찾아냅니다. (충돌 데이터는 iTuneSconnect 계정에 있습니다.) 위의 Sachin의 메소드를 사용하여 or 두 파일을 비교하면 차이가 있습니다. SymbolicAteCrash 파일은 파일과 줄 수를 가리키는 차이가 있습니다.
제안 된 대안의 대부분이 최신 Xcode (Xcode 10으로 테스트)에서 작동하지 않았다는 것을 알았습니다. 예를 들어, xcode-> organizer-> 장치 로그 -View에서 운이 좋지 않은 Drag -Dropping .Crash Logs가 없었습니다.
Symbolicator 도구를 사용하는 것이 좋습니다 https://github.com/agentsim/symbolicator
- Git Clone Symbolicator 저장소 및 Xcode로 컴파일하고 실행하십시오.
- .Crash 파일 (파일을 구걸 할 때 스택 추적이 포함 된 ASCII 파일) 및.
- DRAW and DROOK에서 크래시 파일을 Symbolicator Icon으로 Dock
- 5-30 초에서 상징화 된 충돌 파일은 .Crash 및 .xarchive와 동일한 폴더에서 생성됩니다.
우리는 Google Crashlytics를 사용하여 충돌 로그를 감독합니다. 느낌은 매우시기 적절하고 사용하기 편리합니다.
문서 링크 :https://docs.fabric.io/apple/crashlytics/missing-dsyms.html#missing-dsyms
누락 된 DSYMS 패브릭에는 프로젝트의 DSYM을 자동으로 업로드하는 도구가 포함되어 있습니다. 도구는 /실행 스크립트를 통해 실행되며, 온 보딩 프로세스 중에 실행 스크립트 빌드 단계에 추가됩니다. 그러나 고유 한 프로젝트 구성으로 인해 DSYM 업로드가 실패하거나 앱에서 비트 코드를 사용하는 경우 특정 상황이있을 수 있습니다. 업로드가 실패하면 Crashlytics가 상징 및 표시 충돌을 표시 할 수 없으며 Fabric Dashboard에 "누락 된 DSYM"경고가 나타납니다.
누락 된 DSYM은 아래에 요약 된 단계에 따라 수동으로 업로드 할 수 있습니다.
참고 : 자동화 된 DSYM 업로드 도구에 대한 대안으로 Fabric은 프로젝트 빌드 프로세스의 일부로 수동으로 실행되도록 수동으로 구성 할 수있는 명령 줄 도구 (업로드-스파이)를 제공합니다. 구성 지침은 아래의 업로드 스피볼 섹션을 참조하십시오.
...