dSYM은 무엇이고 어떻게 사용합니까? (iOS SDK)
때때로 컴파일러는 .dSYM 파일을 생성합니다.디버깅 관련 파일인 것 같은데, 무엇인지, 어떻게 사용하는지 잘 모르겠습니다.
.dSYM이란 무엇입니까?어떻게 사용하나요?
dSYM 파일은 앱의 디버그 기호를 저장합니다.
Crashlytics와 같은 서비스에서는 이 기능을 사용하여 충돌 로그의 기호를 적절한 메서드 이름으로 대체하므로 읽기 쉽고 의미가 있습니다.
dSYM을 사용하면 앱의 기호를 함께 제공할 필요가 없어 리버스 엔지니어링이 어려워지고 이진 크기도 줄일 수 있습니다.
충돌 로그를 표시하는 데 사용하려면 앱 바이너리(dSYM을 저장하는 시스템)를 컴파일한 시스템의 주최자에 있는 장치의 장치 로그로 충돌 로그를 끌어다 놓아야 합니다.
dSYM은 있지만 컴파일된 앱 바이너리가 없는 경우 이 링크의 지침에 따라 dSYM을 기계에 설치합니다.
당신이 직접 해야 할 경우를 대비해 크래시 로그를 상징할 수 있도록 도와주는 맥 앱이 있습니다.
자세한 내용은 Apple 기술 노트 TN2151을 참조하십시오.
Xcode 디버깅 기호(dSYM)
dSYM
그것은Bundle
(예:F49088168M.app.dSYM
매핑 정보를 포함하며, 예를 들어 스택 매핑을 읽을 수 있는 형식으로 디코딩할 수 있습니다.
구조:
예를 들어 충돌 로그는 다음과 같습니다.
//before
0 libswiftCore.dylib 0x000000018f3c9380 0x18f394000 + 217984
1 libswiftCore.dylib 0x000000018f3c9380 0x18f394000 + 217984
2 libswiftCore.dylib 0x000000018f3c8844 0x18f394000 + 215108
3 libswiftCore.dylib 0x000000018f3a74e0 0x18f394000 + 79072
4 libswiftCore.dylib 0x000000018f3ab0d8 0x18f394000 + 94424
5 F49088168M 0x00000001045ac750 0x104590000 + 116560
6 F49088168M 0x00000001045b7904 0x104590000 + 162052
7 F49088168M 0x00000001045b897c 0x104590000 + 166268
8 F49088168M 0x000000010459d914 0x104590000 + 55572
9 F49088168M 0x00000001045a0e70 0x104590000 + 69232
10 F49088168M 0x00000001045a0f4c 0x104590000 + 69452
dSYM
활동 중인
//after Symbolicating(dSYM is used)
0 libswiftCore.dylib 0x000000018f3c9380 closure #1 in closure #1 in closure #1 in _assertionFailure+ 217984 (_:_:file:line:flags:) + 452
1 libswiftCore.dylib 0x000000018f3c9380 closure #1 in closure #1 in closure #1 in _assertionFailure+ 217984 (_:_:file:line:flags:) + 452
2 libswiftCore.dylib 0x000000018f3c8844 _assertionFailure+ 215108 (_:_:file:line:flags:) + 468
3 libswiftCore.dylib 0x000000018f3a74e0 _ArrayBuffer._checkInoutAndNativeTypeCheckedBounds+ 79072 (_:wasNativeTypeChecked:) + 208
4 libswiftCore.dylib 0x000000018f3ab0d8 Array.subscript.getter + 84
5 F49088168M 0x00000001045ac750 static ELM327ResponseManager.getResponse(responseStr:obd2Protocol:) + 116560 (ELM327ResponseManager.swift:27)
6 F49088168M 0x00000001045b7904 ELM327Client.dataInput(_:characteristicUuidStr:) + 162052 (ELM327Client.swift:56)
7 F49088168M 0x00000001045b897c protocol witness for BLEClientInputPort.dataInput(_:characteristicUuidStr:) in conformance ELM327Client + 166268 (<compiler-generated>:0)
8 F49088168M 0x000000010459d914 BLEConnection.peripheralDataReceived(data:characteristicUuidStr:) + 55572 (BLEConnection.swift:124)
9 F49088168M 0x00000001045a0e70 BLEConnection.peripheral(_:didUpdateValueFor:error:) + 69232 (BLEConnection.swift:293)
10 F49088168M 0x00000001045a0f4c @objc BLEConnection.peripheral(_:didUpdateValueFor:error:) + 69452 (<compiler-generated>:0)
기본적으로dSYM
릴리스 버전에 대해 기본적으로 생성됩니다.확인할 수 있습니다.
Build Settings -> Generate Debug Symbols(GCC_GENERATE_DEBUGGING_SYMBOLS) -> Yes
Build Settings -> Debug Information Format(DEBUG_INFORMATION_FORMAT) -> DWARF with dSYM File
검색할 수 있는 결과 위치Products
폴더
생성 방법dSYM
수동으로 파일 작성.app
사용.dsymutil
dsymutil F49088168M.app/F49088168M -o F49088168M.app.dSYM
다음을 사용하여 충돌을 나타냅니다.symbolicatecrash
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/Current/Resources/symbolicatecrash "<path>/F49088168M-2020-06-04-212904.crash" "<path>/F49088168M.app.dSYM" > symbolicated.crash
열기dSYM
수동으로 사용dwarfdump
dwarfdump --arch arm64 --debug-pubtypes F49088168M.app.dSYM
결과는 다음과 같습니다.
0x00000065 "PeripheralLogView"
0x000005cc "BLEConnection"
0x000005da "BLEPeripheral"
0x000005e9 "ELM327Client"
*.app의 dSYM에는 포함된(프레임워크) dSYM이 모두 포함되어야 합니다.
언급URL : https://stackoverflow.com/questions/3656391/whats-the-dsym-and-how-to-use-it-ios-sdk
'programing' 카테고리의 다른 글
특정 입력에서 IE10의 "필드 지우기" X 버튼을 제거하시겠습니까? (0) | 2023.06.15 |
---|---|
Eclipse에서 후행 공백을 자동으로 제거하는 방법은 무엇입니까? (0) | 2023.06.15 |
노드의 서버에서 XLS를 CSV로 변환 (0) | 2023.06.15 |
ASP.NET에서 GZip 압축을 구현하는 방법은 무엇입니까? (0) | 2023.06.15 |
세션 생성 권한 부여 방법 (0) | 2023.06.15 |