programing

크래시 로그 Xcode는 어떻게 표시합니까?

stoneblock 2023. 4. 9. 21:03

크래시 로그 Xcode는 어떻게 표시합니까?

Xcode 5 organizer에는 크래시 로그를 모두 나열하는 뷰가 있습니다.추락 로그를 여기로 끌어다 놓을 수도 있어요하지만 Xcode 6 이후로는 기기를 조직 밖으로 옮기고 동일한 창을 새로 열었습니다.그러나 Xcode 6으로 업한 후 Xcode 5에서 드래그 드롭한 크래시 로그를 볼 수 있는 곳을 찾을 수 없습니다.정답 아는 사람?

나 자신을 위해서 뿐만 아니라 공동체를 위해서도 이 답을 쓰는 것이다.

크래시 리포트 심볼링에 문제가 있는 경우 다음과 같이 해결할 수 있습니다.

  1. 폴더를 " " " " , "Foo.app ★★★★★★★★★★★★★★★★★」Foo.app.dSYM하는 ★★★★★★★★★★★★★★★★★★★★★★에서.xcarchive더에넣넣 넣넣넣다다, 「」를 합니다..crash폴더에 보고합니다.

  2. TextEdit으로 합니다.Binary Images:에 첫 카피:0xd7000를 참조해 주세요.

  3. cd더에넣넣 넣넣넣다다제음

    xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 0x0033f9bb

은 주소의 .0x0033f9bb 올바른 을 선택해 주세요-arch첫할 수 ).Binary Images:알수 있습니다.Hardware Model:충돌 보고서 및 앱에서 지원되는 아치)에 표시됩니다.

필요한 주소(스레드콜 스택 등)를 크래시 리포트에서 텍스트파일(TextEdit에서 옵션을 누르고 필요한 텍스트블록을 선택하거나 복사 및 잘라내기)로 직접 복사할 수도 있습니다.

0x000f12fb
0x002726b7
0x0026d415
0x001f933b
0x001f86d3

이제 이 파일을 텍스트 파일에 저장할 수 있습니다.addr.txt

xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 -f addr.txt

이것에 의해, 모든 주소를 동시에 표시할 수 있습니다.

추신.

하기 전에 이 올바르게되어 있는지 가 있습니다.atos기본적으로 제공된 주소에 대해 기쁜 마음으로 보고합니다.)

합니다.Thread 0앱 목록 맨 첫 줄( 두 줄)입니다 예를 들어, 앱 목록 맨 끝에 있는 줄(예: 앱、 앱 、 통 、 통 、 보 、 보 、 。 §:

34  Foo                    0x0033f9bb 0xd7000 + 2525627

해서 '아까불까불까불까불까불까불까불까불까불까불까불까요?main()(call). ★★★★★★★★★★★★★★★★★」0x0033f9bb이 과 같이 '이러한' 것임을 해야 합니다.main()랜덤한 방법이나 함수가 아니라

가 음음음음음음음 is is is is is is is is 가 아닌 경우main()주소를 -loption)arch(부호)를 합니다.-arch옵션)을 클릭합니다.

추신

비트코드로 인해 위의 dSYM이 작동하지 않는 경우 iTunes Connect에서 빌드를 위한 dSYM을 다운로드하고 dSYM에서 실행 가능한 바이너리를 추출하여 디렉토리에 복사하여 사용합니다(즉,Foo로서 「」를 참조해 주세요.atosFoo.app/Foo.

이것도 참조해 주세요.수동 크래시 재심볼리케이션 절차를 단계별로 작성했습니다.

크래시 재심볼레이션

순서 1

위의 모든 파일(MyApp.app, MyApp-dSYM.dSYM 및 MyApp-Crash-log.crash)을 터미널을 사용하여 쉽게 이동할 수 있는 편리한 이름의 폴더로 이동하십시오.

데스크톱이 가장 쉽게 접근할 수 있는 장소입니다.) 그래서 이 세 파일을 데스크톱의 MyApp 폴더로 옮겼습니다.

순서 2

이제 Finder(파인더)의 차례입니다. XCODE 버전에 해당하는 경로로 이동합니다.

하여 " " 를 합니다.symbolicatecrash 파일 스크립트 파일,
find /Applications/Xcode.app -name symbolicatecrash

7.3 8, 14, ...): Xcode 7.3 ( Xcode 8, ..., Xcode 14, ...):/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

순서 3

를 「Directory」에 추가합니다.$PATH env 수 like 음 음 음 음 음 env env env env env env env envsudo vim /etc/paths.d/Xcode-symbolicatecrash스크립트 파일의 디렉토리를 붙여넣고 파일을 저장합니다.단말기를 열는, 「 」를 할 수 있습니다.symbolicatecrash로서 사용할 수 ./usr/bin.

또는

이 위치에서 심볼릭 크래시 파일을 복사하여 데스크톱/MyApp에 붙여넣습니다(잠깐만요... 무작정 팔로우하지 마십시오. 1단계에서 만든 Sybolicate 크래시 파일을 MyApp 폴더에 붙여넣습니다. 파일은 3개입니다).

순서 4

터미널 및 CD를 열어 MyApp 폴더에 연결합니다.

cd Desktop/MyApp — Press Enter
export DEVELOPER_DIR=$(xcode-select --print-path)

: Enter 키를 누릅니다.

./symbolicatecrash -v MyApp-Crash-log.crash MyApp.dSYM

: Enter 키를 누릅니다.

다 됐다! 더 이상 어쩔 수 없다!심볼 로그는 단말기에 있습니다.간단하게 에러를 찾아 해결합니다.

그래, 네가 이걸 할 수 있다는 걸 깨달았어.

  1. »Xcode > Window > DevicesiPhone/iPad/etc 등
  2. 디바이스 로그 표시
  3. 모든 로그

로그가 많이 있을 수 있으므로 Import한 로그를 나중에 쉽게 찾을 수 있도록 이 시점에서 모든 로그를 삭제할 수 있습니다.당신에게 돈이 아니라면요또는 충돌이 발생한 정확한 시점을 모르면 어쨌든 파일에 기록되어야 합니다.귀찮기 때문에 오래된 로그를 모두 삭제합니다(실제로 시간이 걸립니다).

3a가 합니다. 로그 파일에 확장자가 있는지 확인합니다..crash).txt ★★★★★★★★★★★★★★★★★」.ips)

  1. 파일을 드래그 앤 드롭하기만 하면 됩니다.그것은 나에게 효과가 있었다.

저는 .crash 파일로 충분했습니다..d 없음SYM 파일 및 .app 파일.

아카이브(archive)를 구축한 Mac에서 다음 두 가지 명령을 실행했더니 작동했습니다.

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer" 

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash  /yourPath/crash1.crash > /yourPath/crash1_symbolicated.crash

Xcode를 사용하면 (명령줄 도구를 사용하여 주소를 한 번에 하나씩 검색하지 않고) 보다 쉬운 방법이 있습니다.

  1. 임의의 .xcarchive 파일을 가져옵니다.만약 당신이 그것을 사용할 수 있는 이전 버전이 있다면.없는 경우 [Product]> [ Archive from Xcode ]를 실행하여 작성합니다.

  2. .xcarchive 파일을 마우스 오른쪽 버튼으로 클릭하고 '패키지 내용 표시'를 선택합니다.

  3. 충돌한 앱 버전의 dsym 파일을 dSYMs 폴더에 복사합니다.

  4. .app 파일(크래시된 앱 버전)을 [Products]> [ Applications ]폴더에 복사합니다.

  5. ApplicationProperties 딕셔너리에서 Info.plist를 편집하고 CFBundleShortVersionString 및 CFBundleVersion을 편집합니다.나중에 아카이브를 식별하는 데 도움이 됩니다.

  6. .xcarchive를 더블 클릭하여 Xcode로 Import합니다.Organizer가 열립니다.

  7. 크래시 로그로 돌아갑니다(Xcode의 Devices 창에서).

  8. .crash 파일을 드래그합니다(아직 존재하지 않는 경우).

  9. 이제 전체 크래시 로그가 기호화됩니다.그렇지 않으면 마우스 오른쪽 버튼을 클릭하고 '충돌 로그 재심볼리케이트'를 선택하십시오.

Xcode 11.2.1, 2019년 12월

Apple은 .txt 형식의 크래시 로그를 제공합니다.이것은 심볼릭되지 않습니다.

**

디바이스가 연결되어 있는 경우

**

  • .txt 파일을 다운로드하여 확장자를 ".crash"로 변경합니다.
    • Xcode의 창 탭에서 장치 및 시뮬레이터 열기
    • 디바이스 선택 및 디바이스 로그 선택
    • .drag 파일을 디바이스 로그창에 드래그 앤 드롭합니다.

여기에 이미지 설명 입력

저쪽에서 기호로 표시된 충돌 로그를 볼 수 있습니다.

심볼릭 크래시 로그에 대한 자세한 내용은 링크를 참조하십시오.

Xcode 10의 다음 단계에 따라 같은 머신상의 앱 빌드의 크래시 로그를 나타냅니다.

  1. Organizer에서 앱의 기반이 되는 아카이브를 찾습니다.
  2. [ Download Debug Symbols ](디버깅 기호 다운로드) 버튼을 클릭합니다.Downloads 폴더에 아무것도 표시되지 않습니다.
  3. 빌드 머신을 iOS 디바이스에 접속합니다.
  4. 디바이스시뮬레이터에서 디바이스를 선택합니다.
  5. [ View Devices Logs ]버튼을 클릭합니다.
  6. 크래시 파일을 왼쪽 패널에 드래그 앤 드롭합니다.파일은 .crash 확장자로 끝나야 합니다.그렇지 않으면 드래그에 실패합니다.
  7. [ All Logs ]탭으로 전환합니다.
  8. 추가된 크래시 파일을 선택합니다.
  9. 파일이 자동으로 기호로 표시됩니다. 그렇지 않으면 마우스 오른쪽 버튼의 컨텍스트 메뉴 항목인 Re-Symbolicate Log를 사용하십시오.

.d에 접속해야 합니다.DWARF 파일이 들어 있는 SYM 패키지(폴더)이며 편집기를 사용하여 .crash 파일을 열어야 합니다.

역추적 섹션을 보면 다음과 같은 내용이 나타납니다.

...
13  TheElements                         0x0000000100f62ca0 0x100f5c000 + 27808
14  UIKitCore                       0x00000001843e3044 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 356 (UIApplication.m:2328)
...

Binary Images:
0x100f5c000 - 0x101673fff TheElements arm64 ...
...
  1. stacktrace 의 세 열스택 긴 합니다.0x0000000100f62ca0)
  2. 열(4번째 열를 적어 .0x100f5c000)
  3. 「 」의.Binary Imagessection)arm64)
  4. 다음을 수행합니다.
$ atos -arch <arch> -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l <short_address> <long_address>

다음과 같은 결과가 나타납니다.

-[AtomicElementViewController myTransitionDidStop:finished:context:]

정식 출처: https://developer.apple.com/library/content/technotes/tn2151/_index.html #//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICE_WITH_ATOS

주의: 어떤 이유로든 .d에 액세스할 수 없는 경우SYM 파일에서는 Xcode > Product > 를 사용하여 .xcarchive 를 다시 작성할 수 있습니다.아카이브(archive) 하지만 동일한 코드를 빌드하고 있는지 확인합니다.그런 다음 .xcarchive 패키지 내부에서 기호를 추출할 수 있습니다.

Xcode 응 x x x x x x 。이치노 ★★★★★★★★★★★★★★★★★./Applications/Xcode.app 「」는 동작합니다./Applications/Xcode 6.1.1.app동작하지 않습니다.

Apple 문서:

크래시 보고서 심볼화 Xcode를 사용하여 발생한 모든 크래시 보고서를 자동으로 심볼화하려고 합니다.Xcode Organizer에 크래시 보고서를 추가하면 심볼을 표시할 수 있습니다.

  • Mac에 iOS 기기 연결
  • [창] 메뉴에서 [디바이스]를 선택합니다.
  • 왼쪽 열의 "DEVICES" 섹션에서 디바이스를 선택합니다.
  • 우측 패널의 [디바이스 정보]섹션에서 [디바이스 로그 표시]버튼을 클릭합니다.
  • 표시된 패널의 왼쪽 열로 충돌 보고서를 끌어다 놓으십시오.
  • Xcode는 자동으로 크래시 보고서를 상징하고 결과를 표시합니다. 크래시 보고서를 상징하려면 Xcode가 다음을 찾을 수 있어야 합니다.

    1. 크래시 응용 프로그램의 바이너리 및 dSYM 파일입니다.

    2. 응용 프로그램이 링크되는 모든 사용자 지정 프레임워크의 이진 및 dSYM 파일.응용 프로그램을 사용하여 원본에서 작성된 프레임워크의 경우 해당 dSYM 파일이 응용 프로그램의 dSYM 파일과 함께 아카이브에 복사됩니다.서드파티에 의해 구축된 프레임워크의 경우 작성자에게 dSYM 파일을 요청해야 합니다.

    3. 응용 프로그램이 크래시되었을 때 실행 중이던 OS의 기호입니다.이러한 기호에는 특정 OS 릴리스(iOS 9.3.3 등)에 포함된 프레임워크에 대한 디버깅 정보가 포함되어 있습니다.OS 기호는 아키텍처에 따라 다릅니다.64비트 디바이스용 iOS 릴리즈에는 armv7 기호는 포함되지 않습니다.Xcode는 Mac에 연결하는 각 장치에서 OS 기호를 자동으로 복사합니다.

이들 중 하나가 누락된 경우 Xcode는 크래시 보고서를 나타내지 못하거나 크래시 보고서를 부분적으로만 나타낼 수 있습니다.

크래시 로그를 나타내는 가장 쉬운 프로세스:

  1. IPA 빌드 프로세스 중에 주최자로부터 xcarchive 파일을 보관하여 나중에 사용할 수 있도록 합니다.
  2. 크래시가 발생하면 영향을 받는 디바이스에서 크래시 로그를 수집합니다.확장자는 .crash여야 합니다.크래시 로그가 .ips 형식인 경우 .crash로 이름을 변경합니다.
  3. 저장된 경로에서 xcarchive를 두 번 클릭하여 Organizer에 표시합니다(아직 표시되지 않은 경우).
  4. xcode 창에서 열기 -> 디바이스 로그 보기 -> 모든 로그 보기 -> .drag 파일을 드래그 앤 드롭합니다.

5초 동안 기다립니다.Bang! 스택 트레이스의 응용 프로그램 호출이 기호화됩니다!아직 많은 기호를 볼 수 있습니다.그것은 내부 라이브러리와 프레임워크 호출입니다.

이것이 가장 쉬운 시험입니다!

atos를 통해 크래시 리포트를 심볼화 하는 데 어려움을 겪었는데 프로세스가 번거로워 보여서 꺼림칙했는데 Xcode -> Window -> Organizer -> Crashes (왼쪽 메뉴) Xcode가 자동으로 크래시 로그를 다운로드하여 자동으로 심볼화됩니다.거기서 쉽게 사고 원인을 알 수 있어요.

여기에 이미지 설명 입력

언급URL : https://stackoverflow.com/questions/25855389/how-to-symbolicate-crash-log-xcode