iPhone 앱크래시 보고서 상징화
iPhone 앱의 크래시 리포트를 표시하려고 합니다.
iTunes Connect에서 크래시 보고서를 검색했습니다.앱스토어에 제출한 애플리케이션 바이너리와 빌드의 일부로 생성된 dSYM 파일을 가지고 있습니다.
스포트라이트로 인덱싱된 단일 디렉토리에 이 모든 파일을 함께 보관합니다.
그럼 어쩌라는 거야?
호출을 시도했습니다.
symbolicatecrash crashreport.crash myApp.app.dSYM
충돌 보고서에 있는 텍스트와 동일한 텍스트가 출력됩니다.기호는 출력되지 않습니다.
내가 뭘 잘못하고 있나요?
Apple에서 크래시 보고서를 분석하는 단계:
앱스토어에 푸시된 릴리스 .app 파일을 복사합니다.릴리스 시 생성된 SYM 파일과 충돌 리포트는 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를 심볼라이징에 사용하면 확장자 .ipa의 이름을 .zip으로 변경하고 압축을 풀면 앱이 포함된 페이로드 폴더를 얻을 수 있습니다.이 경우 .d는 필요 없습니다.SYM 파일
메모
앱 바이너리에 기호가 제거되지 않은 경우에만 작동합니다.기본적으로 릴리즈 빌드는 기호를 제거합니다.프로젝트 빌드 설정 "Strip Debug Symbols During Copy"에서 NO로 변경할 수 있습니다.
상세한 것에 대하여는, 이 투고를 참조해 주세요.
크래시 로그를 나타내기 위해(그리고 마지막으로 성공하기 위해) 여기에서 이 모든 답변을 읽은 후, 심볼리케이트 크래시를 호출해도 심볼리케이트 출력이 생성되지 않는 이유를 판단하기 위해 여기서 매우 중요한 몇 가지 포인트가 누락되었다고 생각합니다.
크래시 로그를 심볼화할 때는 다음 3가지 에셋을 조합해야 합니다.
- " " ")
example.crash
, 하거나 둘 중 .app
★★★★★★★★★★★★★★★★★★★★★」example.app
크래시 로그에 속하는 앱 바이너리가 포함되어 있습니다.「 」가.ipa
★★★★★★★★★★★★★★★★★★★★★」example.ipa
' )을(를) 수 있습니다..app
를 해제하여.ipa
★★★★★★★★★★★★★★★★★★★★★」unzip example.ipa
후, ,후,.app
된 「포장」에 .Payload/
더입니니다다.dSYM
심볼을 포함한 "Debug Symbols"(즉, "Debug Symbols")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의 앱 , UUID는 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
하지 않는 는, 「」를 할 수 .find . -name symbolicatecrash
Xcode.app 。
보시다시피 파라미터는 더 이상 제공되지 않습니다.따라서 스크립트는 스포트라이트 검색을 실행하여 응용 프로그램의 바이너리 기호와 디버깅 기호를 찾아야 합니다.은 디버깅기호를 하는데, 디버깅기호는 특정 됩니다.com_apple_xcode_dsym_uuids
mdfind 'com_apple_xcode_dsym_uuids = *'
응답합니다.
mdfind "com_apple_xcode_dsym_uuids == AA5E633E-FDA8-346C-AB92-B01320043DC3"
번째 에서는 인덱스된 되고 두 에서는 dSYM 패키지가 됩니다..dSYM
"UUID" 입니다.의 「」를 수 ..dSYM
then 「 」symbolicatecrash
도도마마마마마마 이 의 서브폴더(「:」의 서브폴더)에서.~/Desktop
스포트라이트는 모든 것을 찾을 수 있어야 합니다.
ifsymbolicatecrash
것을 찾다.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')"
ifsymbolicatecrash
것을 찾다.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 Organizer의 Device Logs 섹션에 드래그 앤 드롭할 수 있습니다.이러한 리포트는 자동으로 심볼로 표시됩니다.빌드&아카이브(Xcode 3.2.2의 일부)를 사용하여 해당 버전의 앱을 빌드하는 것이 가장 효과적이라고 생각합니다.
저는 다음 단계를 사용하여 이 작업을 성공적으로 수행했습니다.
순서 1: 바탕화면에 폴더를 만듭니다.Crash Report에 이름을 붙여 3개의 파일("MYAPP.app", "MyApp.app.d")을 저장합니다.SYM", "MYAPP_2013-07-18.crash")가 포함되어 있습니다.
순서 2: 파인더를 열고 어플리케이션으로 이동합니다.Xcode 어플리케이션이 있는 어플리케이션에서 마우스 오른쪽 버튼을 클릭한 후 이 간단한 경로를 따라 "Show Package Contents (패키지 내용 표시)를 클릭합니다."콘텐츠 -> 개발자 -> 플랫폼 -> iPhoneOS.플랫폼 -> 개발자 -> 라이브러리 -> 프라이빗 프레임웍스 ->DTDeviceKit.framework-> 버전-> A-> 리소스"
또는
"콘텐츠 -> 개발자 -> 플랫폼 -> iPhoneOS.플랫폼 -> 개발자 -> 라이브러리 -> 프라이빗 프레임웍스 ->DTDeviceKitBase.framework->버전->A->리소스"
또는
Xcode 6 이상의 패스는 Applications/Xcode.app/Contents/Shared Frameworks/DTDeviceKitBase.framework/Versions/A/Resources입니다.
"symbolicatecrash" 파일이 있는 경우 이를 복사하여 "CrashReport" 폴더에 붙여넣습니다.
순서 3: 단말기를 기동하여 다음 3개의 명령어를 실행합니다.
cd / Users / mac38 / Desktop / Crash Report press 、 Enter enter enter버튼을 누릅니다.
developer_DIR="/Applications/Xcode.app/Contents/Developer"를 내보낸 후 Enter 키를 누릅니다.
- ./symbolicatecrash - A - v MYApp _ 2013 - 07 - 18 . crash MyApp . app . dSYM을 누르고 Enter Now it Done을 누릅니다.(주의: 6.4 이후 버전에는 -A 옵션이 없습니다.그냥 생략해 주세요).
XCode를 사용하여 자동으로 크래시 보고서를 나타내는 단계:
XCODE 9용으로 업데이트됨
iOS 기기를 Mac에 연결합니다(물리적 기기를 연결하면 됩니다. 예, 어리석은 짓이라는 것을 알고 있습니다).
[창] 메뉴에서 [디바이스]를 선택합니다.
왼쪽에서 디바이스를 클릭하고 오른쪽에서 디바이스 로그를 표시합니다.
아마 하다, 하다
Command-A
Delete
더 빨라질 거야문서화되어 있지 않은 중요한 절차: iTunesConnect에서 받은 크래시 보고서 이름 변경
.txt
의 확장자를 지정합니다..crash
충돌 보고서를 왼쪽 영역으로 끌어다 놓으십시오.
그리고 Xcode는 충돌 보고서를 상징하고 결과를 표시합니다.
출처 : https://developer.apple.com/library/ios/technotes/tn2151/_index.html
앱에서 Airbrake를 사용하고 있기 때문에 리모트 에러 로그가 꽤 잘 되어 있습니다.
역추적에서 필요한 경우 아토(atos)로 나타내는 방법은 다음과 같습니다.
Xcode(4.2)에서 .ipa 파일이 생성된 아카이브를 오른쪽 클릭합니다.
터미널에서 예를 들어 xcarchive에 cd를 입력합니다.
MyCoolApp 10-27-11 1.30 PM.xcarchive
과 같이 합니다.
atos -arch armv7 -o 'MyCoolApp.app'/'MyCoolApp'
)그 전화에는 내 심볼을 넣지 않는다.빈 줄에 블록 커서가 표시됩니다.
그런 다음 해당 블록 커서에 심볼 코드를 복사/붙여넣고 Enter 키를 누릅니다.다음과 같이 표시됩니다.
-[MyCoolVC dealloc] (in MyCoolApp) (MyCoolVC.m:34)
블록 커서로 돌아가 다른 기호를 붙여넣을 수 있습니다.
첫 번째 비트를 다시 입력하지 않고 하나의 항목을 역추적할 수 있는 것은 시간을 절약할 수 있는 좋은 방법입니다.
맛있게 드세요!
또한 심볼 크래시를 실행하기 전에 dsym, 앱 번들 및 크래시 로그를 같은 디렉토리에 넣습니다.
그런 다음 .profile에 정의된 다음 함수를 사용하여 심볼 크래시의 실행을 단순화합니다.
function desym
{
/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash -A -v $1 | more
}
여기에 추가된 인수가 도움이 될 수 있습니다.
다음 명령을 실행하여 스포트라이트가 dysm 파일을 "인식"하는지 확인할 수 있습니다.
mdfind 'com_apple_xcode_dsym_uuids = *'
디렉토리에 있는 dsym을 찾습니다.
메모: 최신 Xcode부터는 Developer 디렉토리가 없습니다.이 유틸리티는, 다음의 URL 에 있습니다.
/Applications/Xcode.app/Contents/Shared Frameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
xcode 6.1.1에 대한 간단한 업데이트 답변입니다.
순서
1. X코드>Window > 디바이스.
2. DEVICES 섹션의 디바이스 목록에서 디바이스를 선택합니다.
3. View Device Logs(디바이스 로그 보기)를 선택합니다.
4. [All Logs]섹션에서 report.crash를 직접 드래그하여 드롭할 수 있습니다.
5. Xcode는 자동으로 크래시 보고서를 상징합니다.
6. 심볼릭 크래시 리포트는 크래시 리포트에 기재된 날짜/시간과 대조하여 찾을 수 있습니다.
앱을 개발한 지 몇 년이 지났지만 바이너리를 디버깅한 것은 이번이 처음이었고 모든 파일이 어디에 있는지 알아내는 완전히 NOB처럼 느껴졌습니다. 예를 들어 *.app *.d.SYM 및 크래시 로그그걸 알기 위해서 여러 개의 글을 읽어야 했어요.사진은 천 마디의 가치가 있고, 나는 이 게시물이 미래에 다른 사람에게 도움이 되기를 바란다.
1- 먼저 itunesconnect로 이동하여 크래시 로그를 다운로드합니다.메모: "Too sumpted be submitted for a report to showing a reports."와 같은 메시지가 표시되는 경우가 대부분입니다.기본적으로 사용자가 크래시 로그 보고서를 Apple에 제출하지 않은 경우, 이 시점에서는 아무것도 할 수 없습니다.
2- 바이너리를 Apple에 제출한 후 코드를 변경하지 않은 경우 해당 프로젝트의 Xcode를 실행하고 Product --> Archive를 다시 수행합니다.그렇지 않으면 마지막으로 제출한 바이너리를 찾아 마우스 오른쪽 버튼을 클릭하십시오.
Xcode 4.2.1에서 Organizer를 열고 Library/Device Logs로 이동하여 .crash 파일을 크래시 로그 목록으로 끌어다 놓습니다.몇 초 후에 상징이 됩니다.
원래 빌드가 아카이브된 것과 동일한 Xcode 인스턴스를 사용해야 합니다(즉, 빌드에 대한 아카이브가 Organizer에 있어야 함).
Xcode 4를 사용하면 작업이 더욱 간단해집니다.
- Organizer 열기,
- 왼쪽 컬럼에서 [라이브러리]| [디바이스 로그]을 클릭합니다.
- 화면 하단의 [Import]버튼을 클릭합니다.
그리고 voila.로그 파일이 자동으로 가져오고 기호화됩니다.먼저 Xcode -> Product -> Archive를 사용하여 빌드를 아카이브했습니다.
마법의 Xcode Organizer는 내 앱을 상징하는 마법은 아니다.애플에서 앱 제출 실패 후 받은 크래시 리포트에 대한 심볼은 전혀 받지 못했습니다.
명령줄에서 크래시 보고서를 (스토어에 제출한) .app 파일 및 .d와 같은 폴더에 저장하려고 했습니다.SYM 파일:
$ symbolicatecrash "My App_date_blahblah-iPhone.crash" "My App.app"
이것은 내 앱에 대한 기호만 제공했을 뿐 핵심 기초 코드는 제공하지 않았지만, Organizer가 제공하는 숫자 덤프보다 더 좋았고, 내 앱이 입은 크래시를 찾아서 수정하기에 충분했습니다.Foundation 심볼을 얻기 위해 이 기능을 확장하는 방법을 아는 사람이 있다면 감사하겠습니다.
제 경우, 충돌 보고서를 메일에서 주최자로 직접 드래그하고 있었습니다.어떤 이유에서인지 크래시 리포트가 심볼화 되는 것을 막았습니다(그 이유를 알고 싶습니다).
충돌 보고서를 먼저 바탕화면에 복사한 다음 여기에서 Organizer로 끌면 올바르게 표시됩니다.
아주 구체적인 경우지, 나도 알아.그래도 혹시 모르니까 나눠먹자
여기 심볼 크래시에 관한 또 다른 문제가 있습니다.그것은, 번들에 스페이스가 있는 앱( 「Test App.app」등)에서는 동작하지 않습니다.주의: 제출할 때는 이름에 공백이 있을 수 없기 때문에 이들을 삭제해야 합니다.그러나 이미 분석이 필요한 크래시가 있는 경우 다음과 같이 패치 심볼 크래시(4.3GM)를 적용하십시오.
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에서 문제의 아카이브를 찾습니다.
- 더블 탭으로 파인더에 표시
- 더블 탭으로 번들 내용 표시
- .dSYM 파일과 .app 파일을 새 dir에 복사합니다.
- cd를 새로운 디르로 변환하다
- atos -arch armv7 -o 'Vimeo.app' / 'Vimeo' 명령을 실행합니다.
- 터미널이 대화형 이동을 시작합니다.
- 메모리 주소에 붙여넣고 Enter 키를 누르면 메서드 이름과 라인 번호가 출력됩니다.
- 또는 atos -arch armv7 -o 'Vimeo.app'/'Vimeo' 명령어를 입력하여 하나의 주소에만 대한 정보를 가져옵니다.
내게 효과가 있었던 조합은 다음과 같았다.
- dSYM 파일을 크래시 보고서가 있던 디렉토리에 복사합니다.
- 앱이 포함된 ipa 파일의 압축을 풉니다('MyApp.ipa 압축 해제').
- 분해된 페이로드의 응용 프로그램 바이너리를 충돌 보고서 및 기호 파일과 동일한 폴더("MyApp.app/MyApp")로 복사합니다.
- Xcode의 Organizer에서 크래시 보고서를 Import 또는 재심볼리케이트합니다.
atos를 사용하여 크래시 리포트에 기재되어 있는 주소와 오프셋으로 올바른 심볼 정보를 해결할 수 없었습니다.이렇게 하면 더 의미 있는 것을 알 수 있습니다.이것은 적법한 스택트레이스인 것 같습니다.
제대로 작동시키기 위해 심볼릭 크래시 스크립트를 많이 해킹해야 했습니다.
현재 심볼 크래시를 사용하려면 .app이 .dsym과 같은 디렉토리에 있어야 합니다..dsym을 사용하여 .app을 찾지만 dsym을 사용하여 기호를 찾지는 않습니다.
다음 패치를 시도하기 전에 심볼 크래시를 복사하여 dsym으로 표시해야 합니다.
getSymbolPathFor_dsym의 212행 주변UUID 함수
212 my @executablePath = grep { -e && ! -d } glob("$dsymdir" . "/Contents/Resources/DWARF/" . $executable);
경기 265호선 주변UUID 함수
265 return 1;
이것은 간단합니다, 많은 검색 결과, 크래시 로그 파일 전체를 나타내는 명확한 단계를 발견했습니다.
- .app, crash_report 및 DSYM 파일을 폴더에 복사합니다.
- xcode로 디바이스를 연결하다
- 그런 다음 window -> select devices -> 디바이스 로그를 표시합니다.
- 그런 다음 이 디바이스를 선택하고 모든 로그를 삭제합니다.
- 디바이스 로그 섹션에 크래시를 드래그 앤 드롭합니다.이것은 자동적으로 크래시를 나타냅니다.리포트를 오른쪽 클릭하여 내보냅니다.
coding, happy coding, coding coding
모든 크래시 로그를 나타내는 스크립트를 원합니다.
전제 조건
폴더를 만들고 다음 4가지를 배치합니다.
symbolicatecrash
- - so so script that perl that that that that that that that that that that that that that that that that that answers .에서). 「Xcode Organizer」(Xcode Organizer)로 합니다. 츠키다
Show in Finder
복사) [잘 모르겠습니다][이것이 필수품인지 잘 ]★★★★★★★★★★★★★★★★★.
xccrashpoint
(Xcode Organizer) - (Xcode Organizer)Show in Finder
디렉토리내의 모든 패키지를 카피할 수 있습니다.또, 1 개의 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
- 기호가 표시되었습니다. - 기호가 표시되다.스크립트를 실행하기 전에 디렉토리를 오래된 크래시로부터 삭제할 필요가 없습니다.자동으로 청소가 됩니다. 행운을 빌어요!
제안된 대안의 대부분은 최신 XCode(Xcode 10으로 테스트 완료)에서 작동하지 않는다는 것을 알게 되었습니다.예를 들어 Xcode -> Organizer -> Device logs -view에서 .crash 로그를 드래그 드롭할 수 없었습니다.
Symbolicator 툴 https://github.com/agentsim/Symbolicator 사용을 권장합니다.
- Git 클론 심볼리케이터 저장소를 Xcode로 컴파일하여 실행
- .crash 파일(스택트레이스가 있는 ASCII 파일)과 크래시 릴리스의 .xarchive를 같은 임시 폴더에 복사합니다.
- .crash 파일을 Dock의 Symbolicator 아이콘으로 끌어다 놓습니다.
- 5~30초 안에 .crash 및 .xarchive와 같은 폴더에 심볼릭 크래시 파일이 생성됩니다.
크래시를 나타내려면 Spotlight가 .d를 찾을 수 있어야 합니다.Apple에 제출한 바이너리와 동시에 생성된 SYM 파일입니다.기호 정보가 포함되어 있기 때문에 사용할 수 없는 경우는 운이 없을 것입니다.
여기 아무것도 '그냥' 작동하지 않는 것 같다는 사실에 조금 화가 나서 조사를 좀 해봤더니 결과는 다음과 같습니다.
설정: 보고서를 수신하는 QuincyKit 백엔드.나는 그들이 나에게 무엇을 해야 한다고 제안하는지 알아내지 못했기 때문에 아무런 상징도 설정되지 않았다.
수정: 서버에서 온라인으로 크래시 보고서를 다운로드합니다.이를 '크래시'라고 하며 기본적으로 ~/Downloads/ 폴더로 이동합니다.이를 염두에 두고 이 스크립트는 "올바른 작업을 수행"하며 크래시 리포트는 Xcode(Organizer, 디바이스 로그)에 들어가 심볼이 실행됩니다.
스크립트:
#!/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에서 드래그 앤 드롭할 수 있는 위치로 자동화할 수 있습니다.
먼저 리모트 스크립트 admin/actionapi를 편집해야 합니다.php ~ 행 202.타임스탬프가 올바르게 설정되어 있지 않은 것 같기 때문에, 파일은 Xcode가 인식하지 못하는 「crash」라고 하는 이름이 됩니다(도트 크래시를 원합니다).
header('Content-Disposition: attachment; filename="crash'.$timestamp.'.crash"');
176의 에서 QuincyKit BWCrashReportTextFormatter를 합니다.m~line176(iOS).@"[TODO]"
로로 합니다.@"TODO"
나쁜 캐릭터들을 피해갈 수 있는 방법이죠.
atos는 권장되지 않기 때문에 OSX 10.9 이후를 실행하고 있는 경우 를 실행해야 할 수 있습니다.
xcrun atos
usr/bin/atos: /usr/bin/atos입니다.OS X를 사용합니다.할 수 Xcode는 다음과 같습니다.
xcrun atos
원본 앱 업로드 바이너리 거부의 오류를 정확히 파악하기 위해 Textwrangler를 사용하고 싶습니다.(크래시 데이터는 itunesConnect 계정에서 찾을 수 있습니다.)위의 Sachin 메서드를 사용하여 original.crash를 TextWrangler에 복사하고 작성한 심볼릭 크래시 파일을 다른 TextWrangler 파일에 복사합니다.두 파일의 핀포인트 차이를 비교합니다.심볼 크래시 파일에는 파일 및 문제의 행 번호를 나타내는 차이가 있습니다.
2022년 실행 가능한 솔루션을 찾고 있는 분들을 위해
iPhone 앱크래시 리포트를 심볼라이즈 하는 순서
- 를 Apple에서 변환합니다.
.txt
을 하다.crash
Xcode > Window > Devices and simulators
- 연결된 실행 중인 IOS 디바이스를 선택해야 합니다.(시뮬레이터 또는 오프라인 장치가 아님)
- 선택합니다.
All Logs
& Drop", "Drag & Drop" (드래그 앤 드롭).crash
주의: 다른 솔루션에는symbolicatecrash
은 다음과 같습니다
⚠xcode 기호 크래시는 더 이상 사용되지 않습니다. Xcode ⚠xcode의 향후 릴리스에서 제거될 예정입니다.
Google Crashlytics를 사용하여 크래시 로그를 감시하고 있습니다.이 느낌은 매우 시기적절하고 사용하기 편리합니다.
문서 링크: https://docs.fabric.io/apple/crashlytics/missing-dsyms.html#missing-dsyms
누락된 dSYM 패브릭에 대한 모든 내용에는 프로젝트의 dSYM을 자동으로 업로드하는 도구가 포함되어 있습니다.이 도구는 /run 스크립트를 통해 실행됩니다. /run 스크립트는 온보드 프로세스 중에 스크립트 빌드 실행 단계에 추가됩니다.그러나 고유한 프로젝트 구성으로 인해 또는 앱에서 비트 코드를 사용하는 경우 dSYM 업로드가 실패할 수 있습니다.업로드가 실패하면 Crashlytics는 크래시를 표시하고 표시할 수 없으며 패브릭 대시보드에 "Missing dSYM" 경보가 표시됩니다.
누락된 dSYM은 다음 절차에 따라 수동으로 업로드할 수 있습니다.
주의: 자동 dSYM 업로드 도구 대신 Fabric은 프로젝트 빌드 프로세스의 일부로 실행되도록 수동으로 구성할 수 있는 명령줄 도구(업로드 기호)를 제공합니다.설정 순서에 대해서는, 다음의 upload-symbols 섹션을 참조해 주세요.
...
언급URL : https://stackoverflow.com/questions/1460892/symbolicating-iphone-app-crash-reports
'programing' 카테고리의 다른 글
다중 INSERT 문 대 다중 값을 가진 단일 INSERT (0) | 2023.04.12 |
---|---|
VBA 코드로 IP 주소를 ping하고 결과를 Excel로 반환 (0) | 2023.04.12 |
테이블 내부의 텍스트 정렬 클래스 (0) | 2023.04.12 |
SQL Server에서 날짜만과 날짜/시간을 비교하는 방법 (0) | 2023.04.12 |
WPF IOException에서 리소스를 찾을 수 없습니다. (0) | 2023.04.12 |