출처
Header
Incident Identifier: B6FD1E8E-B39F-430B-ADDE-FC3A45ED368C CrashReporter Key: f04e68ec62d3c66057628c9ba9839e30d55937dc Hardware Model: iPad6,8 Process: TheElements [303] Path: /private/var/containers/Bundle/Application/888C1FA2-3666-4AE2-9E8E-62E2F787DEC1/TheElements.app/TheElements Identifier: com.example.apple-samplecode.TheElements Version: 1.12 Code Type: ARM-64 (Native) Role: Foreground Parent Process: launchd [1] Coalition: com.example.apple-samplecode.TheElements [402]
Date/Time: 2016-08-22 10:43:07.5806 -0700 Launch Time: 2016-08-22 10:43:01.0293 -0700 OS Version: iPhone OS 10.0 (14A5345a) Report Version: 104 |
Incident Identifier : 이 crash report 의 unique 한 식별자이다.
CrashReporter Key : 장치 별 식별자로, 동일한 장치의 두 보고서에는 동일한 값이 표현된다.
Beta Identifier : 장치와 공읍 업체의 조합에 대한 고유 식별자이다. Testlight 를 통해 배포된 앱에서만 노출된다.
Code Type : 장치의 아키텍쳐로 ARM-64, ARM, x86-64 또는 x86 중 하나이다.
Role : 앱 종료시 프로세스에 할당 된 task_role 을 뜻한다.
Exception Information
Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Triggered by Thread: 0 |
Null 포인터에 값을 대입했기 때문에 생성된 Crash Report
Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000 Termination Signal: Segmentation fault: 11 Termination Reason: Namespace SIGNAL, Code 0xb Terminating Process: exc handler [0] Triggered by Thread: 0 |
Exception Codes : 하나 이상의 64비트 16 진수로 인코딩 된 Exception 에 대한 프로세서 관련정보이다. 다른 필드에서 이를 이용하여 human-readable 한 정보를 추출한다.
Exception Subtype : human-readable 하게 바뀐 예외 코드의 이름
Exception Message : human-readable 하게 바뀐 예외 코드에서 추출한 추가 정보
Exception Note : Exceptoin Subtype 과 관련된 추가 정보로 이 필드에 SIMULATED 가 포함되어 있으면 Crash 는 아니지만 시스템 요청에 의해 종료된 것이다.
Termination Reason : 프로세스가 종료된 이유이다.
Triggered by Thread : 예외가 발생한 Thread
Exception Type
Bad Memory Access [EXC_BAD_ACCESS // SIGSEGV // SIGBUS]
Abnormal Exit [EXC_CRASH // SIGABRT]
Killed [SIGKILL]
Quit [SIGQUIT]
App 의 lifttime 을 관리할 권한이 있는 다른 프로세스의 요청으로 종료되었음을 의미한다.
프로세스가 crash 난 것을 의미하지는 않지만 탐지 가능한 방식으로 오작동했을 가능성이 높다.
iOS 에서는 키보드 앱이 너무 오래 걸리면 키보드 앱이 종료된다.
crash report 에 표시된 Backtraces 가 담당 코드를 가리킬 가능성은 거의 없다.
이 이슈를 더 잘 이해하기 위해선 시작 중 작업의 대부분을 background thread 로 옮기거나
Extension 이 로드된 이후까지 지연시켜야한다.
Trace Trap [EXC_BREAKPOINT // SIGTRAP]
Illegal Instruction [EXC_BAD_INSTRUCTION // SIGILL]
Resource Limit [EXC_RESOURCE]
Guarded Resource Violation [EXC_GUARD]
Other Exception Types
일부 crash report 에는 16 진수 값 (예 : 00000020)으로 이름이 지정되지 않은 예외 유형이 포함될 수 있다.
이러한 오류 보고서 중 하나가 표시되면 예외 코드 필드를 직접 확인하여 자세한 내용을 확인해야한다.
0xbaaaaaad : Crash 보고서가 아닌 전체 시스템의 스택 샷임을 나타낸다. 스택 샷을 찍으려면 홈 버튼과 모든 볼륨 버튼을 누른다.
종종 이러한 로그는 사용자가 실수로 생성한 것이므로 오류를 나타내지는 않는다.
0xbad22222 : VoIP 앱이 너무 자주 다시 시작 되었기 때문에 iOS에 의해 종료되었음을 나타낸다.
0x8badf00d : watch dog 시간 초과가 발생하여 앱이 iOS 에 의해 종료되었음을 나타낸다.
앱이 시스템 이벤트를 시작, 종료 또는 응답하는데 너무 오래 걸렸을 경우에 발생한다.
가장 많이 하는 실수로는 Main Thread 에서 synchronous 하게 네트워크 통신을 하는 경우가 있다.
MainThread 에서의 오래 걸리는 작업은 background thread 로 이동하거나 다르게 처리해 main thread block 을 막야아한다.
0xc00010ff : 발열(?) 로 인해 OS 에서 앱을 종료했음을 나타낸다. 이 것은 device 또는 환경에 의한 것일 수 있다.
App 을 보다 효율적으로 실행하기 위해 (https://developer.apple.com/videos/play/wwdc2011/312/) 를 참고한다.
0xdead10cc : 앱이 suspend 된 상태에서 파일 lock 또는 sqlite lock 을 유지했기 때문에 OS 에 의해 종료되었음을 나타낸다.
앱이 suspend 된 상태에서 파일이나 sqlite db 에서 작업을 수행하고 싶다면
background job 을 등록하여 (beginBackgroundTask:) 해당 작업을 완료하고 잠금을 해제해야한다.
'C# > Xamarin Maui' 카테고리의 다른 글
'미공' 공공데이터 포털에 소개되었다. (0) | 2018.12.19 |
---|---|
iOS 충돌 보고서 (0) | 2018.12.18 |
(에러) Perhaps it doesn't exist in the Mono for Android profile? (0) | 2018.12.04 |
Xamarin Forms iOS 12.0.0.15 설치 (0) | 2018.10.09 |
Xamarin Forms 에 WPF 프로젝트 추가하기 (0) | 2018.10.07 |