iOS 크래시 보고서 심볼화
iOS 애플리케이션 크래시를 디버깅할 때 가끔 크래시 보고서를 분석해야 할 때가 있습니다. 크래시 보고서에 대한 더 자세한 정보는 Apple 문서에서 찾을 수 있습니다.
크래시 보고서는 일반적으로 제대로 읽을 수 있도록 심볼화가 필요합니다. 심볼화는 머신 코드 주소를 사람이 읽을 수 있는 소스 위치로 변환합니다. 아래 문서는 Kotlin을 사용하는 iOS 애플리케이션의 크래시 보고서를 심볼화하는 방법에 대한 몇 가지 구체적인 내용을 설명합니다.
릴리스 Kotlin 바이너리용 .dSYM 생성
Kotlin 코드 내의 주소를 심볼화하려면 (예: Kotlin 코드에 해당하는 스택 트레이스 요소의 경우) Kotlin 코드용 .dSYM
번들이 필요합니다.
기본적으로 Kotlin/Native 컴파일러는 Darwin 플랫폼에서 릴리스 (즉, 최적화된) 바이너리용 .dSYM
을 생성합니다. 이는 -Xadd-light-debug=disable
컴파일러 플래그로 비활성화할 수 있습니다. 동시에 이 옵션은 다른 플랫폼에서는 기본적으로 비활성화되어 있습니다. 이를 활성화하려면 -Xadd-light-debug=enable
컴파일러 옵션을 사용하십시오.
kotlin {
targets.withType<org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget> {
binaries.all {
freeCompilerArgs += "-Xadd-light-debug={enable|disable}"
}
}
}
kotlin {
targets.withType(org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget) {
binaries.all {
freeCompilerArgs += "-Xadd-light-debug={enable|disable}"
}
}
}
IntelliJ IDEA 또는 AppCode 템플릿에서 생성된 프로젝트에서는 이러한 .dSYM
번들이 Xcode에 의해 자동으로 발견됩니다.
비트코드에서 재빌드할 때 프레임워크를 정적으로 만드세요
비트코드에서 Kotlin으로 생성된 프레임워크를 재빌드하면 원래의 .dSYM
이 무효화됩니다. 로컬에서 재빌드가 수행되는 경우, 크래시 보고서를 심볼화할 때 업데이트된 .dSYM
이 사용되는지 확인하십시오.
App Store 측에서 재빌드가 수행되는 경우, 재빌드된 동적 프레임워크의 .dSYM
은 버려지는 것처럼 보이며 App Store Connect에서 다운로드할 수 없습니다. 이 경우 프레임워크를 정적으로 만들 필요가 있을 수 있습니다.
kotlin {
targets.withType<org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget> {
binaries.withType<org.jetbrains.kotlin.gradle.plugin.mpp.Framework> {
isStatic = true
}
}
}
kotlin {
targets.withType(org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget) {
binaries.withType(org.jetbrains.kotlin.gradle.plugin.mpp.Framework) {
isStatic = true
}
}
}