중요합니다
Visual Studio App Center는 2026년 6월 30일까지 계속 지원되는 분석 및 진단 기능을 제외하고 2025년 3월 31일에 사용 중지되었습니다. 자세히 알아보기.
macOS, tvOS 및 iOS 크래시 보고서에는 충돌이 발생했을 때 앱의 실행 중인 모든 스레드에 대한 스택 추적이 표시됩니다. 스택 추적에는 메모리 주소만 포함됩니다. 충돌을 이해하는 데 필요한 클래스 이름, 메서드, 파일 이름 또는 줄 번호가 아닙니다.
변환된 메모리 주소를 얻으려면 기호화에 필요한 모든 정보가 포함된 App Center에 dSYM 패키지를 업로드해야 합니다. Apple의 공식 개발자 설명서에서 기호화에 대해 자세히 알아볼 수 있습니다.
App Center 빌드 및 배포 서비스는 유효한 dSYM 및 원본 맵 .zip
파일을 자동으로 생성하고 진단 서비스에 파일을 업로드할 수 있습니다. App Center를 사용하여 최종 사용자에게 앱을 빌드하고 자동으로 배포하는 경우 기호 파일을 수동으로 가져오고 업로드할 필요가 없습니다.
심볼이 없는 충돌
심볼화되지 않은 크래시는 심볼을 업로드하기 전에 몇 가지 세부 정보를 볼 수 있도록 App Center 진단 섹션에 표시됩니다. 이러한 크래시에서 누락된 기호는 "unsymbolicated" 탭에 표시됩니다. 누락된 기호가 업로드되면 심볼화되지 않은 충돌 그룹이 기호화된 크래시 그룹으로 대체됩니다.
번들 .dSYM
찾기
- Xcode에서 창 메뉴를 열고 오거나이저를 선택합니다.
- 보관함 탭을 선택합니다.
- 왼쪽 사이드바에서 앱을 선택합니다.
- 최신 보관 파일을 마우스 오른쪽 단추로 클릭하고 Finder에서 표시를 선택합니다.
- Finder에서 파일을 마우스 오른쪽 단추로 클릭하고
.xcarchive
패키지 내용 표시를 선택합니다. -
dSYMs
라는 이름의 폴더를 확인하면 dSYM 번들이 포함되어 있어야 합니다. - dSYM 번들을 ZIP 파일로 만듭니다.
Xcode 대신 Visual Studio를 사용하는 경우, iOS 크래시 로그를 기호화하기 위한 dSYM 파일을 어디에서 찾을 수 있나요?를 참조하십시오.
기호 업로드
App Center 포털
- App Center에 로그인하고 앱을 선택합니다.
- 왼쪽 메뉴에서 진단 섹션으로 이동하고 기호를 선택합니다.
- 오른쪽 위 모서리에서 기호 업로드를 클릭하고 파일을 업로드합니다.
- App Center에서 기호를 인덱싱하면 크래시가 기호화됩니다.
React Native iOS 앱
React Native iOS 파일에 대한 기호 파일을 가져오려면 Mac의 dSYM 패키지와 앱의 JavaScript 소스 맵을 사용하여 ZIP 파일을 만듭니다. 원본 맵의 이름을 index.ios.map
지정해야 합니다. 아래 명령은 릴리스 빌드에 대한 원본 맵을 생성합니다.
react-native bundle --entry-file index.ios.js --platform ios --dev false --reset-cache --bundle-output unused.jsbundle --sourcemap-output index.ios.map
App Center API
API를 통해 기호를 업로드하는 프로세스에는 일련의 세 가지 API 호출이 포함됩니다. 하나는 백 엔드에 공간을 할당하고, 다른 하나는 파일을 업로드하고, 다른 하나는 업로드 상태를 업데이트합니다. 첫 번째 API 호출의 본문은 symbol_type
을 Apple
로 설정해야 합니다.
-
POST
symbol_uploads API에 대한 요청을 트리거합니다. 이 호출은 파일의 백 엔드에 공간을 할당하고 asymbol_upload_id
및upload_url
속성을 반환합니다.
curl -X POST 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads' \
-H 'accept: application/json' \
-H 'X-API-Token: {API TOKEN}' \
-H 'Content-Type: application/json' \
-d '{JSON BODY}'
- 첫 번째 단계에서 반환된
upload_url
속성을 사용하여PUT
요청을 만듭니다. 헤더:"x-ms-blob-type: BlockBlob"
를 포함하고 디스크에 파일의 위치를 제공합니다. 이 호출은 백 엔드 스토리지 계정에 파일을 업로드합니다. PUT Blob 요청 헤더에 대해 자세히 알아봅니다.
curl -X PUT '{upload_url}' \
-H 'x-ms-blob-type: BlockBlob' \
--upload-file '{path to file}'
- 첫 번째 단계에서 반환된
PATCH
속성을 사용하여symbol_upload_id
symbol_uploads API에 요청합니다. 요청 본문에서 업로드 상태를 업로드committed
프로세스aborted
(성공적으로 완료)로 설정할지 또는 완료하지 못했는지를 지정합니다.
curl -X PATCH 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads/{symbol_upload_id}' \
-H 'accept: application/json' \
-H 'X-API-Token: {API TOKEN}' \
-H 'Content-Type: application/json' \
-d '{ "status": "committed" }'
비고
기호 업로드 API는 256MB보다 큰 파일에 대해 작동하지 않습니다. App Center CLI를 사용하여 이러한 파일을 업로드합니다. App Center CLI 리포지토리의 지침에 따라 App Center CLI를 설치할 수 있습니다.
App Center CLI
CLI를 사용하여 기호 파일을 업로드할 수도 있습니다.
appcenter crashes upload-symbols --symbol {symbol file}
비트 코드
비트 코드는 애플 자체에 의해 앱 스토어로 전송 된 응용 프로그램을 다시 컴파일하고 최신 최적화를 적용 할 수 있도록 애플에 의해 도입되었다. Bitcode를 사용하도록 설정하면 스토어에서 앱에 대해 생성된 기호가 사용자 고유의 빌드 시스템의 기호와 다릅니다.
App Center 크래시 보고는 아직 비트코드 사용 앱에서 충돌의 기호화를 완전히 지원하지 않습니다. 그 동안 비트 코드를 사용하지 않도록 설정하는 것이 좋습니다. 비트코드를 사용하지 않도록 설정하면 기호 관리가 크게 간소화되며 현재 iOS 앱에 대한 알려진 단점이 없습니다.
앱에 대한 비트 코드 사용 안 함
- Xcode에서 프로젝트 탐색기에서 최상위 요소를 클릭하여 프로젝트 설정을 엽니다.
- 빌드 설정 페이지로 이동
-
bitcode
를 검색합니다. - 결과에서 값을 "예"에서 "아니요"로 직접 변경합니다.
- 앱 다시 빌드
이러한 간단한 단계를 사용하면 App Center 크래시 보고가 평소와 같이 작동합니다.
비트 코드 사용 앱에 대한 기호 검색
비트 코드를 사용하도록 설정하려면 다음 단계에 따라 적절한 dSYM 파일을 다운로드할 수 있습니다.
- Xcode의 오거나이저를 열기
- iTunes Connect에 업로드한 앱의 특정 보관 파일 선택
- "dSYM 다운로드" 단추를 클릭합니다. 이 단계에서는 비트 코드 컴파일된 dSYM 파일을 원래 보관 파일에 삽입합니다.
- App Center에서 해당 앱 및 버전에 기호 업로드
Xcode 이끌이가 새 기호를 제공하지 않는 경우 다음 단계를 수행하여 iTunes Connect 포털에서 dSYM 파일을 다운로드해야 합니다.
- iTunes Connect 포털에서 앱 선택
- 맨 위에 있는 활동 탭 선택
- 누락된 기호가 있는 앱의 빌드 버전을 선택합니다.
- dSYM 다운로드 링크를 클릭합니다.
- 다운로드한 파일을 App Center에 업로드합니다. 이 파일에는 App Center에서 충돌을 기호화하기 위해 필요한 기호가 포함되어 있습니다.
기호 문제 해결
기호를 업로드하고 비트코드를 비활성화한 후에도 크래시가 여전히 기호화되지 않은 상태로 표시되는 경우, 이는 업로드된 dSYM 파일이 App Center에서 요구하는 파일과 일치하지 않기 때문일 수 있습니다. dSYM 파일을 업로드할 때 App Center는 UUID에 따라 올바른 앱 버전과 일치합니다.
dwarfdump라는 CLI 도구를 사용하여 dSYM 파일에 올바른 UUID가 있는지 다시 확인할 수 있습니다.
- dSYM 파일에서 UUID를 찾습니다.
dwarfdump --u CrashProbeiOS.app.dSYM
- 결과는 다음과 같이 표시됩니다.
UUID:ADF53C85-4638-3EFF-A33C-42C13A18E915 (armv7)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
UUID:D449E33D-7E74-379D-8B79-15EE104ED1DF (arm64)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
- 반환된 UUID가 디버그 기호 대화 상자에 표시된 UUID와 일치하는지 다시 확인합니다.
기호 무시
App Center에 충돌 보고서를 완전히 기호화하기 위한 모든 기호 파일이 없는 경우, 충돌은 기호화되지 않음 탭에 나열됩니다. 필요한 기호는 액세스 권한이 있는 경우 이 페이지에서 업로드됩니다.
기호를 업로드할 수 없는 경우 표에서 행을 선택하고 버전 무시 단추를 클릭하여 기호를 무시됨으로 표시할 수 있습니다. 이 버튼은 App Center가 파일의 기호를 사용하여 크래시를 가능한 한 완전히 처리하고 기호화하도록 지시합니다. 처리가 완료되면 크래시 탭에 부분적으로 기호화된 상태로 표시됩니다. 무시된 것으로 표시된 동일한 기호 ID에 따라 달라지는 새로운 충돌은 시스템 내부로 들어올 때 기호화되지 않은 탭을 우회합니다.