Xcode 5 Organizer에는 모든 충돌 로그를 나열하는보기가 있습니다. 드롭 크래시 로그를 여기로 드래그 할 수 있습니다. 그러나 Xcode 6부터는 장치를 구성에서 벗어나 새로운 창을 가지고 있음을 알고 있습니다. 그러나 Xcode 6으로 업그레이드 한 후 Xcode 5에서 드래그 다운 된 충돌 로그를 볼 수있는 곳을 찾지 못했습니다.
답변
Ok 나는 당신이 이것을 할 수 있다는 것을 깨달았습니다.
- 에
Xcode > Window > Devices
연결된 아이폰 / 아이 패드 선택 / 등 상단 왼쪽. - 장치 로그보기
- 모든 로그
아마도 거기에 많은 로그가 있고 나중에 가져온 로그를 쉽게 찾을 수 있도록하기 위해이 시점에서 모든 로그를 삭제할 수 있습니다. 또는 충돌이 발생한 정확한 시점을 모른다면 어쨌든 파일에 기록해야합니다 … 게으 르기 때문에 오래된 로그를 모두 삭제합니다 (실제로 시간이 걸렸습니다).
- 파일을 해당 목록으로 끌어다 놓기 만하면됩니다. 그것은 나를 위해 일했다.
답변
이 답변을 나 자신만큼이나 커뮤니티에 쓰십시오.
충돌 보고서를 상징하는 데 문제가있는 경우 다음과 같이이를 극복 할 수 있습니다.
-
복사, 별도의 폴더를 생성
Foo.app
하고Foo.app.dSYM
해당에서.xcarchive
폴더로. 또한.crash
보고서를 폴더에 복사하십시오 . -
TextEdit 또는 다른 곳에서 충돌 보고서를 열고
Binary Images:
섹션으로 이동 하여 첫 번째 주소를 복사하십시오 (예 🙂0xd7000
. -
cd
폴더에. 이제 다음 명령을 실행할 수 있습니다.xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 0x0033f9bb
이것은 address의 심볼을 상징합니다 0x0033f9bb
. -arch
옵션 의 올바른 값을 선택하십시오 ( Binary Images:
섹션 의 첫 번째 라인에서 가져 오거나 Hardware Model:
충돌 보고서 및 앱의 지원되는 아치에서 알아낼 수 있음 ).
충돌 보고서의 필요한 주소 (예 : 스레드 호출 스택)를 텍스트 파일 (TextEdit에서 Option을 누른 상태에서 필요한 텍스트 블록을 선택하거나 복사 및 잘라 내기)에 직접 복사하여 다음과 같은 결과를 얻을 수 있습니다.
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()
전화 해야합니다 . 0x0033f9bb
위에서 설명한 것처럼 주소 ( 이 경우)를 상징하면 이것이 main()
임의의 방법이나 기능 이 아니라는 것을 확인해야 합니다.
주소가 주소가 아닌 경우 main()
로드 주소 ( -l
옵션) 및 아치 ( -arch
옵션)를 확인하십시오.
PPS
위에서로 인해 일을하지 않는 경우 비트 코드 ,의 dSYM (찾기> 패키지 내용보기)에서 실행 가능한 바이너리를 추출, 아이튠즈 커넥트에서 빌드의 dSYM를 다운로드 디렉토리에 복사하고 (즉 사용 Foo
은 AS) atos
대신 에을 (를 ) 인수 하십시오 Foo.app/Foo
.
답변
당신도 이것을 참조 할 수 있습니다, 나는 수동 충돌 다시 상징 의 단계별 절차를 작성했습니다 .
1 단계
위의 모든 파일 (MyApp.app, MyApp-dSYM.dSYM 및 MyApp-Crash-log.crash)을 터미널을 쉽게 사용할 수있는 편리한 이름의 폴더로 이동하십시오.
나에게있어 데스크탑은 가장 쉽게 접근 할 수있는 곳이다.) 따라서이 세 파일을 데스크탑의 MyApp 폴더로 옮겼습니다.
2 단계
이제 Finder가 바뀌 었습니다. XCODE 버전에 해당되는 경로를 찾으십시오.
이 명령을 사용하여 symbolicatecrash
스크립트 파일 을 찾으십시오 .
find /Applications/Xcode.app -name symbolicatecrash
Xcode 8, Xcode 9, Xcode 11 /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
Xcode 7.3
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
XCode 7 /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
Xcode 6 /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
Xcode 6 이하
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
또는
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources
3 단계
찾은 symbolicatecrash 스크립트 파일의 디렉토리를 $PATH
다음 sudo vim /etc/paths.d/Xcode-symbolicatecrash
과 같이 env 변수에 추가하고 스크립트 파일의 디렉토리를 붙여넣고 파일을 저장하십시오. 새 터미널을 열 때에있는 symbolicatecrash
명령으로 모든 폴더를 호출 할 수 있습니다 /usr/bin
.
또는
이 위치에서 symbolicatecrash 파일을 복사하여 Desktop / MyApp에 붙여 넣습니다 (잠깐만 … 맹목적으로 따르지 마십시오. Sybolicatecrash 파일을 MyApp 폴더에 붙여넣고 있습니다. 하나는 좋아하는 위치에서 1 단계에서 생성 한 파일 중 하나입니다. )
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를 누르십시오
그게 다야 !! 기호화 된 로그가 터미널에 있습니다. 이제 무엇을 기다리고 있습니까? 이제 간단히 오류를 찾아서 해결하십시오.)
행복한 코딩!
답변
나를 위해 .crash 파일로 충분했습니다. .dSYM 파일과 .app 파일이 없습니다.
아카이브를 빌드하는 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를 사용하는 더 쉬운 방법이 있습니다 (명령 줄 도구를 사용하지 않고 한 번에 하나씩 주소를 검색하지 않아도 됨)
-
.xcarchive 파일을 가져옵니다. 당신이 전에 그것을 가지고 있다면 그것을 사용할 수 있습니다. 계정이없는 경우 Xcode에서 제품> 아카이브를 실행하여 작성하십시오.
-
.xcarchive 파일을 마우스 오른쪽 버튼으로 클릭하고 ‘패키지 내용 표시’를 선택하십시오.
-
충돌 한 앱 버전의 dsym 파일을 dSYMs 폴더에 복사
-
.app 파일 (충돌 된 앱 버전)을 Products> Applications 폴더에 복사하십시오.
-
Info.plist를 편집하고 ApplicationProperties 사전에서 CFBundleShortVersionString 및 CFBundleVersion을 편집하십시오. 나중에 아카이브를 식별하는 데 도움이됩니다.
-
.xcarchive를 두 번 클릭하여 Xcode로 가져옵니다. 오거나이저를 열어야합니다.
-
충돌 로그로 돌아 가기 (Xcode의 장치 창에서)
-
.crash 파일을 거기서 드래그하십시오 (아직없는 경우).
-
전체 충돌 로그가 이제 상징화되어야합니다. 그렇지 않은 경우 마우스 오른쪽 버튼을 클릭하고 ‘재심사 충돌 로그 다시 표시’를 선택하십시오.
답변
Xcode 10에서 다음 단계에 따라 동일한 머신의 앱 빌드에서 충돌 로그를 상징하십시오.
- Organizer 내부 에서 앱이 기반한 아카이브를 찾습니다.
- 디버그 심볼 다운로드 버튼을 클릭하십시오 . 다운로드 폴더에 아무 것도 나타나지 않지만 괜찮습니다.
- 빌드 머신을 iOS 디바이스에 연결하십시오.
- 장치 및 시뮬레이터 에서 장치를 선택하십시오 .
- 장치 로그보기 버튼을 클릭하십시오 .
- 충돌 파일을 왼쪽 패널로 끌어서 놓으십시오. 파일은 .crash 확장자로 끝나야 합니다. 그렇지 않으면 드래그가 실패합니다.
- 모든 로그 탭으로 전환 하십시오.
- 추가 된 충돌 파일을 선택하십시오.
- 파일은 자동으로 기호화되어야하며, 그렇지 않으면 마우스 오른쪽 단추 클릭 컨텍스트 메뉴 항목 다시 기호화 로그를 사용하십시오 .
답변
동일한 하위 폴더에 .dSYM 및 .crash 파일이 있으면 다음 단계를 수행하십시오.
- .crash 파일의 역 추적을 보면 두 번째 열의 이진 이미지 이름과 세 번째 열의 주소 (예 : 아래 예의 0x00000001000effdc)를 확인하십시오.
- 역 추적 바로 아래 “이진 이미지”섹션에서 이진 이미지 (예 : TheElements)의 이미지 이름, 아키텍처 (예 : arm64) 및로드 주소 (아래 예에서는 0x1000e4000)를 확인하십시오.
- 다음을 실행하십시오.
$ atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc
-[AtomicElementViewController myTransitionDidStop:finished:context:]