문제

나는 iPhone 앱의 충돌 보고서를 시도하고 상징하려고합니다.

iTunes Connect의 충돌 보고서를 검색했습니다. App Store에 제출 한 응용 프로그램 바이너리가 있으며 빌드의 일부로 생성 된 DSYM 파일이 있습니다.

스포트라이트로 색인화 된 단일 디렉토리 안에 이러한 파일이 모두 함께 있습니다.

지금 뭐야?

나는 호출을 시도했다 :

symbolicatecrash crashreport.crash myApp.app.dSYM

그리고 그것은 크래시 보고서에있는 것과 동일한 텍스트를 상징하지 않고 시작하도록 시작합니다.

내가 뭔가 잘못하고 있습니까?

도움이 되었습니까?

해결책

Apple의 충돌 보고서를 분석하는 단계 :

  1. 릴리스 된 .App 파일을 앱 스토어로 복사하고, 출시 당시 생성 된 .dsym 파일과 사고 보고서가 Apple에서 폴더.

  2. 터미널 응용 프로그램을 열고 위의 폴더로 이동 (사용 cd 명령)

  3. 운영 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 개의 자산이 있습니다.

  1. 충돌 로그 파일 자체 (즉 example.crash)), Xcode의 주최자에서 내보내거나 iTunes Connect에서 수신했습니다.
  2. 그만큼 .app 패키지 (예 : example.app) 그 자체에는 충돌 로그에 속하는 앱 바이너리가 포함되어 있습니다. 당신이있는 경우 .ipa 패키지 (예 : example.ipa) 그런 다음 추출 할 수 있습니다 .app 압축을 풀어 패키지 .ipa 패키지 (예 : unzip example.ipa). 그 후 .app 패키지는 추출 된 내에 있습니다 Payload/ 폴더.
  3. 그만큼 .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 명령을 실행하십시오

  1. CD/사용자/MAC38/Desktop/CrashReport 및 Enter 버튼을 누릅니다.

  2. Export Developer_dir = "/applications/xcode.app/contents/developer"및 Enter를 누릅니다.

  3. ./symbolicatecrash -a -v myapp_2013-07-18.Crash myapp.app.dsym을 누르고 Enter를 누르십시오.

Xcode를 사용하여 충돌 보고서를 자동으로 상징하는 단계 :

Xcode 9 용으로 업데이트되었습니다

  1. 연결하다 어느 Mac에 iOS 장치 (예, 물리적, 그렇습니다. 이것이 바보 같은 것을 알고 있습니다)

  2. "창"메뉴에서 "장치"를 선택하십시오.enter image description here

  3. 왼쪽에서 장치를 클릭하고 오른쪽에있는 장치 로그를 봅니다.enter image description here

  4. 기다리다. 나타나는 데 1 분이 걸릴 수 있습니다. 아마도 Command-A 그 다음에 Delete 이것을 속도로 올릴 것입니다.

  5. 중요한 문서화되지 않은 단계 : iTuneSconnect에서 얻은 충돌 보고서의 이름을 바꿉니다. .txt 연장 .crash 확대

  6. 충돌 보고서를 왼쪽 영역으로 드래그하십시오.enter image description here

그런 다음 Xcode는 충돌 보고서를 상징하고 결과를 표시합니다.

원천: https://developer.apple.com/library/ios/technotes/tn2151/_index.html

앱에서 Airbrake를 사용하여 원격 오류 로깅의 상당히 잘 작동합니다.

배경계에 필요한 경우 ATO로 상징하는 방법은 다음과 같습니다.

  1. Xcode (4.2)에서 주최자로 이동하여 .ipa 파일이 생성 된 아카이브를 마우스 오른쪽 버튼으로 클릭하십시오.

  2. 터미널에서 CD xcrarchive로 예를 들어 MyCoolApp 10-27-11 1.30 PM.xcarchive

  3. 다음을 입력 atos -arch armv7 -o 'MyCoolApp.app'/'MyCoolApp'(단일 따옴표를 잊지 마십시오)

  4. 나는 그 부름에 내 상징을 포함하지 않습니다. 당신이 얻는 것은 빈 줄의 블록 커서입니다.

  5. 그런 다음 해당 블록 커서에 심볼 코드를 복사/붙여 넣고 Enter를 누릅니다. 당신은 다음과 같은 것을 볼 수 있습니다.

    -[MyCoolVC dealloc] (in MyCoolApp) (MyCoolVC.m:34)

  6. 블록 커서로 돌아와서 다른 기호로 붙여 넣을 수 있습니다.

첫 번째 비트를 다시 입력하지 않고 한 항목 하나를 뒤집을 수있는 것은 좋은 시간 절약입니다.

즐기다!

또한 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에 충돌 로그 보고서를 제출하지 않았으므로 해당 시점에서 아무 것도 할 수 없습니다.

enter image description here

enter image description here

2- 이제 바이너리 IT를 Apple에 제출 한 이후 코드를 변경하지 않았다면 해당 프로젝트의 Xcode를 시작하고 제품-> 아카이브를 다시 수행하십시오. 그렇지 않으면 최신 제출 된 바이너리를 찾아 마우스 오른쪽 버튼으로 클릭하십시오.

enter image description here

enter image description here

enter image description here

enter image description here

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'를 입력하십시오.

나를 위해 일한 조합은 다음과 같습니다.

  1. DSYM 파일을 충돌 보고서가있는 디렉토리에 복사합니다.
  2. 앱이 포함 된 IPA 파일을 압축 해제합니다 ( 'unzip myapp.ipa')
  3. 결과 폭발 된 페이로드에서 응용 프로그램 바이너리를 사고 보고서 및 기호 파일과 동일한 폴더로 복사하십시오 ( "myapp.app/myapp")
  4. 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 가지를 넣으십시오.

  1. symbolicatecrash Perl Script- 위치를 알려주는 답이 많이 있습니다.

  2. 충돌과 일치하는 빌드의 아카이브 (Xcode Organizer에서 간단한 Show in Finder 그리고 복사) [이것이 필수인지 확실하지 않습니다

  3. 모든 xccrashpoint 패키지 - (Xcode Organizer에서. Show in Finder, 디렉토리의 모든 패키지를 복사하거나 상징화하려는 단일 XCCrashPoint를 복사 할 수 있습니다).

  4. 짧은 스크립트를 디렉토리에 추가하십시오.

    #!/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 개의 디렉토리가 나타납니다.

  1. allCrashes - 모든 충돌이 모든 것입니다 xccrashpoint 거기있을 게.

  2. symboledCrashes - 동일한 충돌이지만 이제는 모든 기호가 있습니다.

  3. 스크립트를 실행하기 전에 오래된 충돌에서 디렉토리를 정리할 필요가 없습니다. 자동으로 청소됩니다. 행운을 빕니다!

충돌을 상징하려면 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은 프로젝트 빌드 프로세스의 일부로 수동으로 실행되도록 수동으로 구성 할 수있는 명령 줄 도구 (업로드-스파이)를 제공합니다. 구성 지침은 아래의 업로드 스피볼 섹션을 참조하십시오.

...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top