iOS 에서 손수 crash reporter 구현하는데에 제약이 많은건 알고 있었지만 애플 엔지니어가 포럼에서 도시락 싸들고 다니면서까지 뜯어 말리는 줄은 몰랐다. ㅎㄷㄷ
이렇게 말리는데에는 몇 가지 이유가 있는데
- 크래시 시점에 시그널을 외부 프로세스로 전달할 수 없기 때문에 스택이 정리되는 상태에서 덤프까지 써야 한다.
- macOS 특성상 mach Exception 이 signal handling 보다 유리한데, 1의 이유로 제대로 exception 처리를 하기 곤란하고, 그래서 대부분 3rd party들은 signal handler를 등록해서 덤프를 처리한다. 필연적으로 누락되거나 제대로 처리되지 않는 경우가 발생한다.
- async signal safe 함수만 써서 구현해야 한다. 안그러면 동작을 보장할 수 없다.
이 외에도 크고 작은 문제들이 생각보다 많고, 암튼 그래서 3rd party iOS 크래시는 수집이 쉽지가 않다.